They do work off speed not engine revs :s, its just that there is an inherrant margin for error in that the rolling circumferance of the wheels varies with how worn down the tyres are, I don't know how much tread they start with but its a lot more than car tyres and they are big wheels, now if the last time the speedo was calibrated for the tacho was at a time when the tyres were worn down, when they are changed, the speed will under read. Now its not as if some independant operators would arrange it to happen like that on purpose... its just the luck of the draw....
If of course you are proposing that they should obtain road speed in a way thats not affected by the changing circumference of the tyres, then I'd be interested in how you propose this be done, and don't say GPS, because this too can have inaccuracies and these can be a lot more variable than a calibrated speedo, plus it can lag a bit and drop out totally in some small areas.
Maybe its possible these days to have a speedo based system that has a fiddle factor built in for tyre wear that it self calibrates on set straight sections of road where the GPS is likely to be good and takes into account many such mearsements and stays within a minimum and maximum slope value from the number of miles since the last official calibrataion, and knows how to handle a sudden jump the other way when tyres are replaced. It would still not be compleley accurate though and would probably take a lot of development and implentation and introduce some new failure modes into it all!