My understanding is that the <MinAreaSize> in <Units> table (along with <Domain> set to DOMAIN_SEA) is the mechanism that is restricting your boats from being built in these cities.
If you look at the tables, you'll notice that all boats (and coast-only buildings) have MinAreaSize set to 10. Elsewhere the map scripts are set to make lakes with max area 9 iirc. The exact method the game uses to count tiles to determine nearby area sizes is not clear to me, though.
Anyway, if I'm right, you could set this field to x < 10 for naval units to allow them to be built on lakes >= x tiles in size, or to -1 to build anywhere. I believe the AI will not do well with this generally, as it will not analyze which lakes are good candidates for canals etc., though maybe changing it for ranged naval only will be an acceptable compromise.
Alternatively to MinAreaSize, you could maybe override in .lua, though that'll be much more complicated