Ok. At 25Mbps upload one large packet takes 2ms to send, so you are seeing variation in the range of 8ms or so, which is like 4 large packets, which is kind of typical variation.
Sorry, I had the math inverted. it takes 0.48ms to send a large packet, so no this doesn't make sense that it would have this much variation of 8ms.
The HFSC based script with a dedicated realtime queue might help a little. see the thread Help prioritizing games with alternative qdisc design