If you're a little clever with interpolation, you don't need to run at 1000s of frames per second! You'd just calculate how much time after the last frame it would take to cross the line at the last known speed and position.
To be more specific: most often a game would run its physics calculation at the framerate it's designed for, like 30 or 60 fps, and in case it displays with a higher framerate, try and interpolate the graphical data based on the physics calculations. It's possible to make the physics run faster as well, but carelessly adapting things may make things go wrong (a good example is Quake 3, where your jump height changes based on the com_maxfps value).
A racing game that runs its physics at 60 frames per second can, at best, calculate time in 0.016666... second intervals. To have a precise 3-decimal-points clock, a game would need to run its physics calculations at 1000 frames per second.
(It is also worth noting that a game developer can try to interpolate a more precise finish time by looking at the last pre-finish frame position of the vehicle and the first post-finish frame position and calculating at what point "between the frames" the finish line would be crossed, but I don't know how difficult and/or buggy actually implementing that would be.)