It might make sense to discuss how different devices and software work to calculate distance.
Here are my beliefs about how stuff works:
Garmin uses the distance between the watch/device and the Garmin satellites to calculate the distance traveled by the watch.
Problem- if the satellites reception is poor and/or the satellites are not well triangulated- the values will be off.
Map-my-ride/run- has maps that were originally created with accurate satellite data. Specific routes can then be transposed onto the map (using a device) or you can draw your own route on the map. Distance are then calculated with the accurate map information.
Problems- the routes that you draw on the map assume that you took the most logical route. Routes that are drawn by poorly triangulated devices (Garmin for instance) will show that you ran off course.
Strava - I assume Strava works by averaging the data from different individual devices.
The problem with this is that the most popular devices will dominate the results. And the most popular devices are NOT necessarily the most accurate.
Training peaks - I think it accepts the data from ones device and imposes the data on accurate maps. Unlike map-my-run, however, it does not use the map to calculate distances. (Unless you hit the recalculate for elevation button and then only elevation data is used to recalculate).
Bad data caused by poorly triangulated devices are taken as gospel.
But the source of the error is visible as the map.