Set down a boat in a fresh redstone-ready world. From the console
/execute as @e[type=boat] at @s run tp @s ^ ^ ^1
The boat moves as expected. Now get into the boat, and run the same command again. Again, the boat moves.
Now try sticking the command in a command block. If you run the command block while outside the boat, the boat moves. If you run the command block while sitting in the boat, it does not move.
Why the discrepancy? I guess that's the bug. It could be that trying to alter a 'rootvehicle' of a player is supposed to be 'illegal modifying playerdata' or something. Or maybe the command block runs in the world loop after "vehicle moved so rider must move" physics has run, in which case the boat gets effectively 'rubber banded' back to the root player at the end of the tick, since the player's coords have not moved, or something.
But it's weird, and might be a bug.
Related issues
Comments

Sounds like a duplicate of MC-97513