I've won out and lost out due to this. And a few ties due to the same.
Isotope's explanation is correct. Also, this can be why your altitude on some really curvy routes (like a greenway or gravel trail) might be low. It doesn't detect a change in altitude since you didn't cross over part of the "mesh" of the altitude coords around you. So no credit there either.
I find routes running or biking with longer straight runs to be more accurate than ones with lots of little turns. Particularly turns and jukes that are really small.
Metrics for a cyclocross course are a joke with gps. Best you can do is just know your start/end point and manually utilize your lap function on a GPS. Just choose the start/end point at a far end of the course you don't get close to during the lap.