With V-sync ON, the monitor/graphics combo basically says "I'll wait for FULL frames to be delivered". At 144hz, this is a frame time of approximately 6.9ms. If your graphics system can deliver a full frame within that time frame of 6.9ms, then that full frame gets displayed. If you can't, then the current frame continues to be displayed for the next 6.9ms until the monitor is ready to refresh again and a full frame is available, when it is looking for the next frame to be displayed. It doesn't matter if you had a frame ready in 7.1ms, you missed the 6.9ms window, so the display is not ready to refresh and needs to wait for that "display a full frame " window at the next 6.9ms mark.
Tearing occurs because without Vsync, your monitor wants to display whatever is in the framebuffer during the refresh cycle. If this is part of one frame, and the GPU is sending out part of another frame into the framebuffer while the monitor is still drawing what is in the framebuffer, that's what gets displayed.
Adaptive sync (like gsync) works because the system is able to ignore the fixed refresh cycle time of a non-adaptive sync monitor. Refresh rates with adaptive sync monitors are nominal, but dont; need to be fixed. With a fixed refresh rate monitor and v-sync, (such as 144hz), the 6.9ms display window is something you have to hit the target or under that time per frame. If you don't hit that target, then you have to wait for the next fixed refresh opportunity. With adaptive sync, it doesn't matter as long as you are within the abilities of the adaptive sync to compensate. 6.9 ms doesnt matter because if the frame times exceed the 6.9 ms time, the hardware can stop what it is doing, and initiate the refresh cycle when the frame is ready, instead of waiting the full 6.9ms time for a fixed window of opportunity.
At 90fps, think of it as hz (not the same exact thing I know, but just a way of thinking of it for timing issues). If your system can deliver average 90fps it can deliver (on AVERAGE) a FULL frame every 11.1ms. Some frames may be faster, some slower, but that's your average. At 144hz, every TWO frames will be approximately 13.88ms. VSync only draws full frames. If some full frames are ready faster than 6.9ms and ready to go, you can draw now. At an average of 11.1ms, you have to wait two full screen refreshes to be under that target 13.88ms for the next monitor refresh cycle. If a particular frame takes 15ms to render, you have missed that 13.88 ms target, and have to wait yet ANOTHER 6.9ms for the display to be ready for the full frame on fixed refresh monitors.
Displaying every TWO frame times gives you an EFFECTIVE refresh rate of 72 hz in that scenario. Displaying every THREE frame times gives you an EFFECTIVE refresh rate of 48hz (again using V-sync, since v-sync only wants to display FULL frames)