What could cause large discrepancies in reported data use?
your data counter widget most likely summed-up the exact amount of data transferred. i.e. for a transfer of 33 kB, and another of 17 kB, it would count 33+17 = 50 kB
your carrier more likely sums up blocks of 10 kB. So given the same example, he calculates 40+20 = 60 kB
not for real, but it looks like Android's internal takes both and makes an average, so for our example it would come up with 55 kB. Makes absolutely no sense (and I doubt it's true), but rawly matches the numbers given in your question...