The client won't send movement request packets if it doesn't have a valid surface to walk to.
It does pre-validation on movement blocking which is only overridden when mounted on the specific sea horse mount body, which is why that works, but you just spin in place if you're on foot.
The tiles that Gargoyles can traditionally fly on are part of a sky walkway, which is an invisible path of tiles that act as the surface.
The only solution right now is to constantly ensure a surface tile exists one step in front of the player at all times while on water.
Preferably the tile would be a no-draw tile, so you don't see anything being rendered - the aim here is to trick the client into thinking there is a valid surface directly ahead of you.