They read high because the light oil on a tiny bearing in there gets stiff in low temperatures, especially if the tach is old and the oil has dried out some. The tach cable drives a magnet inside an aluminum drum, and the drum drives a shaft attached to the indicator needle on the face of the tach. The magnet drags the aluminum cup around against a very light hairspring. The aft end of that needle shaft is supported by a tiny bearing in the tach's input shaft, which is spinning the whole time the engine is running. The oil in question is in that little bearing, and stiff oil tends to pull the needle shaft farther around the scale that it should.
Tachs usually read low as they age. The magnet gets old and loses some of its strength. And before someone says "hold on a minute, that aluminum cup isn't ferrous and the magnet can't drive it," you don't understand eddy current. The magnet's movement generates an electrical current in the aluminum, which forms its own magnetic field that interacts with the magnet. Faster magnet spin generates more current in the cup, more magnetic field in the cup, and more interaction, pulling the needle farther around the scale.
Magnetism generates electricity in copper wire, too, in case anyone forgot. It's not ferrous, either. And you rely on that fact for your ignition spark, your alternator or generator's output, your older avionics with their tuned tank circuits, for the strobe light powerpack transformer, and other stuff. We're surrounded by that phenomenon and take it for granted. Every motor in your house, every electron that comes from the power company....
Don't buy a new mechanical tach. Get an electronic one. In Canada we have to check magnetic-drag-type tachs yearly for accuracy, and they have to be within 4% of true in the middle of the cruise RPM range. That regulation doesn't apply to electronic tachs, since they're crystal-controlled and won't drift. And an electronic tach could cost less than a new mechanical one.