I think Mr Pythagorus is going to be of some assistance here.
When you're climbing a hill out on a highway (which is what we do 99.9% of the time) the distance travelled in terms of degrees of latitude around the earth is almost (but not exactly) equal to the distance actually travelled that you could get out and measure with a yardstick.
If you're climbing a steep incline, your vehicle moves only a small amount across the face of the earth, but moves quite a distance UP. The satellite doesn't measure up or down travel, only across.
For those about to wonder how some satellites give you the altitude ... it doesn't. In the Sensis map data is information about the elevation of each point on the map, and the GPS knows what point you're at - so it knows what elevation you're at. Roughly.
Anyway, you will also get errors if all of your wheels are spinning. The speed & distance calculations are an aggregate of the input from the ABS sensors. If ALL of your wheels are spinning, your GPS is going to measure no travel yet your car is going to think it's going somewhere.
As for your specific discrepancy - it's got to be a combination of all of that.
Then there's also the HTFDIK factor, which is built into any computational device. It's roughly equivalent to a shrug, or a puzzled look coupled with a spoken "How the ..." and explains how all of the unexplainable things happen.