I'd trust the speedometer (with OEM tires and gearing) to give a more accurate read at low speed, GPS for a more accurate read when you're looking at top speed. You could certainly dial in the speedometer to be more accurate with a speedo healer or an aftermarket unit though.
Smartphones and dedicated navigation devices like a Garmin, TomTom, or even bicycle computers can account for curvature of the earth as well as elevation change for displaying speed. Surface mapping (2D) is different, but
GPS signals provide data for 3D mapping and many newer consumer devices make use of it. Still not perfectly accurate. They GPS is not showing you nautical miles per hour unless you've got it set to, and it's not going to disguise nautical miles per hour as miles per hour since those are different units of speed.
GPS pitfalls are largely signal blockage, signal reflection around tall buildings, changes in speed or direction that occur in a short time or distance that the few meters range of accuracy isn't precise enough to account for when averaged out, and bad data from satellites often related to space weather events. Some of those issues can be partially compensated for on phones by using more sensor data (magnetometer, gyroscope, or accelerometer), A-GPS which uses cell towers to quickly and more accurately pick up on the device's location, or Wi-Fi positioning system which uses known WiFi network locations to get a rough idea of where the device is when there isn't an open sky for GPS or enough towers for A-GPS. IMO those features add privacy concerns, but not much different than carrying your phone along with WiFi and cellular enabled.
The CT125's speedometer reading is also an indirect measurement of ground speed. It's measuring rotation at the countershaft with no regard for chain and sprocket wear, variances in tire circumference from tread wear, load or pressure, or where contact is being made on the tire. I don't think Honda dialed it in to be very accurate when stock and new either, but instead targeted a percentage variance that doesn't under report the speed while accounting for what some average of those other variables might work out to be.
@vintagegarage put together a video comparing speedometer readings to GPS readings. If I caught highest speeds right, the speedometer hits a maximum of 57 mph while the GPS hits a maximum of 55 mph in the clip.
The difference in mph scales, so mph difference at low speed isn't very observable, mph difference at high speed is more observable while only useful given the context of that speed. A percentage scales, though basing a percentage on an imprecise unit of measure (mph in whole numbers, made as precise as we can by using the top speeds) results in a percentage that may not be very precise or accurate. Can still work that out for a rough number though.
Difference: 57 mph - 55 mph = 2 mph
Average of the two speeds: (55 mph + 57 mph) / 2 = 56 mph
Percentage difference: (2 mph / 56 mph) x 100% =
3.57%