The bug
If you left click on the Ender Dragon to spectate through its eyes, nothing happens. If you press shift after this happens, you are telported to the current position of the dragon, as if you had been spectating. Between the time that you click on the dragon and the time that you press shift, you can move around freely.
By contrast, spectating the dragon using /spectate @n[type=ender_dragon]
does work somewhat– the command makes you spectate the main dragon hitbox, rather than the head as would be expected.
Happens to me too, exactly as you describe.