Ofcourse GPS can be far more accurate than the commercial apparatus are right now. Reason is ofcourse that the US military has made it inaccurate for commercial purposes as not to help the enemy highjacking their own positioning system. Ofcourse military GPS is corrected for the introduced inaccuracy.
Differential GPS was developed to overcome this.
But this is really not the main point of this post.
The most simple reason why GPS readings are not alwasy accurate is that a good GPS device measures the repositioning and speed relative to the earth. This is often not the same actual speed. Sea and Ocean current nearly always offset the speed reading. Sailing against the current and you're sailing faster than the GPS reading and sailing with the current and you're sailing slower than the reading. When relative to water ofcourse because your repostition speed is ofcourse exactly given by your GPS. And then ofcourse you have the little effects that the others are speaking of. Simple devices without the introduced inaccuracy surpressor may be offsetted as a result of that two, but I didn't know that any devices with one or the other technic for this were sold anymore.