It has to with German TUV requirements that the speedo NEVER read lower than the actual speed.
You can get it closer by changing your tire size. Running 255/40-17 rear tires on our M Roadster and 265/41-18s on the E46 M3 have both speedos almost spot on.
Or one could get a GPS (very useful for other things) and use the speed readout in it.
'95 Alpine M3 LTW
'00 Dakar M Roadster
'02 Topaz M3
Red/White SRF #4 (Chassis 561)