It's often used to compensate for the fact that you want an up-to-date reading at arbitrary points within a frame. If you only update once per frame, and some code reads the position just before that every frame, that's going to give a full extra frame of lag, rather than just an extra 2ms.