Well, remember that data streams are digital signals going over radio. So, just like radio, data streams get garbled and screwed up from time to time. Unlike voice data over radio, where you can make out what they are saying anyway, data packets have to get resent.
Signal strength and quality of connection can play a big factor on data speed. Additionally, your data packets are handled by Sprint's backend network before it hits the Interwebs. If Sprint's backend network is slow, then data is going to be slow (think AT&T in NYC and Frisco).
In summary, just because it says 3G doesn't always mean you'll get a consistent speed anywhere at anytime. Sometimes on 3G when my signal strength is bad, I'll get 30kbps download speeds. Sometimes I'll get 1.8mbps (the max I saw was 2.4 once... and I think that was late night, probably ideal conditions).