Comparing speed on a GPS vs the speedo is reasonable as long as the GPS limitations are understood. A speedometer bases its displayed value on something related to wheel turns which has the ability for truly accurate measurement (assuming tires are not especially worn and are not spinning in a low-traction environment). Let's say it can yield excellent precision but accuracy is a function of (factory) calibration and actual tire diameter.
A GPS does not measure speed. It does a calculation of speed based upon two sets of XY coordinate positions and the elapsed time between the position measurements. The accuracy of the coordinates and the update frequency (and averaging algorithms) will dictate the accuracy of the speed display. The comparison is likely to be valid going in a straight line on level surface and at a rate of speed that is large in comparison to the update frequency. The GPS does point-to-point distance divided by time so in a curve, it will be clipping the circumference to a number of straight-line segments on the inside of the curve resulting in a measurement bias on the low side - the extent of the error will be a function of the radius of curvature and update frequency. (This is theoretical and I don't know if the update frequency is low enough to result in a measureable difference under normal conditions.)
If you are moving very slowly, the positional error of GPS measurement can come into play. For example, lets say that the absolute error in any direction is 2 meters. If you cover 10 meters between GPS measurement points, there is a potential error of +/- 2 meters divided by the time interval (20% in each direction; 40% total for a single measurement). If you cover 100 meters in the same time, the error is only 2%. this would result in a random error, not a bias as in the curvature situation. As I mentioned above, the extent of the error is dependent upon update frequency and how the GPS averages subsequent measurements.
Elevation changes can be an issue with GPS measurement of speed (or distance). The speedo is measuring the actual meters of pavement that passes under the wheel in a given time interval and the GPS measures the distance between points on an XY grid without (as far as I know) taking elevation changes into account. Lets consider an extreme case of a 45° slope which can be expressed as a right triangle. If the base of the triangle (and the elevation) are each one kilometer, then the hypotenuse (actual distance travelled) is 1.414 kilometers (Thanks, Pythagoras). The GPS measures the distance travelled as 1 kilometer- a whopping 41% error. As I said, the 45°slope is extreme but serves to illustrate the low bias that will result if you are riding in mountainous terrain.
Having said all of this, the GPS probably is more accurate than the speedo. The speedometer may have a built-in error which should be a constant percentage that can be corrected using a "fudge factor". Tire wear and factory calibration are the only factors. The GPS does not have a "built-in" bias but will exhibit a negative bias in curves and a negative bias with elevation changes (as discussed). There may also be a random error at low(er) speeds.