The GPS will record every little up/down it does, the website just counts the contour lines crossed.
More importantly the GPS is possibly only accurate to ~10m, which is fine in the horisontal plane, but if the position varies by 10m between two vertical fixes it records that elevation change. Multiply that over the whole ride (it might be 1000’s of fixes, only needs a few % to be errors) and you get an inacurate climbing total.
On average its somewhere arround 60% for my garmin edge 305, so if it says 1800ft, the actual number is more like 1100ft.
Ditto max speed, but the other way around, I’ve got a wheel sensor for the garmin that will tell me I’ve done 40mph, but mapmyride.com cant see that data so just takes the fastest speed between 2 fixes which is invariably higher, you could stand stationary and it would still say your max speed was 2-3mph as any 2 fixes wont be identical.