Mine has always matched phone gps exactly. Most other cars I've been in read higher than gps.
I have tested my R with phone gps apps quite a few times and it is spot on with the stock summer tires and slightly optimistic (around 1 mph) with my winter tires on 18" rims.
Some manufacturers, especially some German ones, intentionally overstate the mph on the speedometer, supposedly as a "safety feature." BMW and Porsche are known for this.
In the case of BMW, I have one older one (2000 Z3M Coupe) which is spot on. I also have 3, 1-Series vehicles that all read "optimistic," from 2 to 6 mph, depending on the speed the car is traveling at. This is intentional on the part of the mfr., dealers know about this, and dealers will refuse to code this out due to liability concerns.
There is a simple android (and presumably also ios) app from a company called "Carly" that can be used with an OBD 2 gadget from them, for coding purposes on BMWs. You can code out the intentional overstating of mph on the digital speedo (which only shows up physically in the display in the first place if you code it (digital speedo) "IN") with the Carly app. You CANNOT code out the overstatement on the analog speedo. You also cannot code out the overstatement on the digital readout of the cruise control speed you have selected when using cruise control. So, if you code out the digital overcorrection, code in to have the digital speed displayed, and then use cruise control, you can see this unfold in real time, e.g. the cruise control might show 73, the analog speedo 73, and digital speedo 70, in the case of one of my 3, effected, 1-Series cars. Note is made that perhaps an experienced coder could write code to code out the over reading on the analog speedo and on the cruise control read out, however at least the Carly app does not have this functionality.
As to VW, my impression is that they don't intentionally code in the over reading of speed like BMW and Porsche do, other than perhaps a cushion of a mph or so just to be sure that if you change tires that the speedo does not under read your actual speed.