Here's a short framerate graph from Afterburner which shows this behavior:

At the points where the framerate drops to 30 FPS - which is not instant in this case - the GPU load may only be something like 60%.
So it's capping the performance to sync up with the refresh rate instead of allowing the framerate to stay totally unlocked.
If the framerate was unlocked with adaptive v-sync, triple-buffering, or g-sync, GPU load would be stuck at 99% and the framerate might be something like 35-55 FPS instead of a steady 30.
However it seems like there is some sort of prediction going on to provide some degree of hysteresis.
So you do occasionally get moments where the game is running in the 40-50 fps range.
I was using Half-Life 2 for most of the testing, but the handful of games I checked today all showed similar behavior.
I'm sure that I have seen some games where the graph did just look like a square wave, but that may have either been before I increased Afterburner's polling rate, or it may just be how some games implement V-Sync.
I thought this behavior might have been something which changed recently, or perhaps on newer GPUs due to NVIDIA enabling windowed G-Sync, but even rolling back to some drivers that were several years old (the reason I swapped out GPUs) or killing the DWM process (even though I was testing in Full-screen) I was still seeing this behavior.
It's anything but smooth when the games are running like this however.
At the point where it is locked to 30 or 60 it is as smooth as those framerates can be, but the transitions stutter worse than triple-buffering, since it is trying to stay at either 30 or 60.
If you use adaptive v-sync or triple-buffering and monitor both the framerate and GPU load, the average framerate will be much higher than this V-Sync behavior. And G-Sync should show exactly that as well.
Only G-Sync does this without the game stuttering, and without latency or tearing.
HARDOCP show this behavior with their adaptive v-sync article, comparing the three states of V-Sync. (on/off/adaptive)
Triple-buffering should have identical performance to the adaptive graphs, without the tearing.
G-Sync should have identical performance to the V-Sync off graphs, only without tearing or juddering because it's synchronizing the refresh rate to the framerate.
You can see that V-Sync on generally runs at either 30 or 60, but there are still points at which it hits values in-between for a brief moment.

