Well, for one thing the speedo on your motor is water speed, affected by current in the water, and just as airspeed in a plane is different than its groundspeed, your groundspeed, indicated by the GPS, will often be different than your speed through a moving column of water. Against the current you'll show a higher speed on the speedo because it gets its information from water pressure on the pitot tube at the leading edge of your motor's lower unit. in which case your GPS will show a slower speed over the ground. The very small orifice on the pitot tube also makes your speedo subject to errors caused by clogging with bits of sand, seaweed, etc.