@SunCat In version 1.10.2 at least, the en_US.lang file contained "<username> fell out of the water" for this death message. Somewhere between then and now (1.16.*) it was removed (probably when the ".lang" files were switched to ".json" files). Because this bug doesn't seem to be very frequently observed it must be tricky to "fall out of the water" and why the message was removed.
This was recently observed live on Twitch and clipped here. If I had to guess as to the cause in this particular clip, swimming is considered the same as flying in terms of accumulating "time falling". But when the swimmer touches a block not normally in the water (like the crying obsidian of the broken portal structure) the fall damage is calculated and applied to the player – killing them. (I suggest the Crying Obsidian as this doesn't seem to be caused when swimming against blocks like sand, gravel, etc. and C.O. is a relatively new block)
However, in the logic of selecting which death message to display - "death.fell.accident.<cause>", one of the checks is "Was the player underwater?" setting the cause as "water", resolving to "death.fell.accident.water" which incorrectly requests the removed death message from the localization files. In the OP's case, this removed message is likely chosen by checking the player's head location after animating the player falling over from fall damage.
Further more, the same applies for downwards facing dispensers. The mob is spawned with head 1 block above dispenser and should instead have head one block below the dispenser.
@SunCat In version 1.10.2 at least, the en_US.lang file contained "<username> fell out of the water" for this death message. Somewhere between then and now (1.16.*) it was removed (probably when the ".lang" files were switched to ".json" files). Because this bug doesn't seem to be very frequently observed it must be tricky to "fall out of the water" and why the message was removed.
This was recently observed live on Twitch and clipped here. If I had to guess as to the cause in this particular clip, swimming is considered the same as flying in terms of accumulating "time falling". But when the swimmer touches a block not normally in the water (like the crying obsidian of the broken portal structure) the fall damage is calculated and applied to the player – killing them. (I suggest the Crying Obsidian as this doesn't seem to be caused when swimming against blocks like sand, gravel, etc. and C.O. is a relatively new block)
However, in the logic of selecting which death message to display - "death.fell.accident.<cause>", one of the checks is "Was the player underwater?" setting the cause as "water", resolving to "death.fell.accident.water" which incorrectly requests the removed death message from the localization files. In the OP's case, this removed message is likely chosen by checking the player's head location after animating the player falling over from fall damage.