I know you don't want items in the inventory list, but the simplest way to do this is with items.
If you make one invisible (aka no drawing), transparent item, set its dialogue to be "You can't swim." and put a bunch of those in front of the actual wall-set water tiles, it will look to the player like when they touch the water it is playing the dialogue.
Maybe combine that with the permanent item hack so that the water narration can't be picked up and added to the inventory?
https://github.com/seleb/bitsy-hacks/blob/v17.0.0/dist/permanent-items.js or choose Permanent Item Hack on Borksy
The other option would be to make your water tiles as sprites, which can't be walked through and do display dialogue, but you would have to duplicate enough sprites for each individual water tile that you need which seems like a hassle.