I found the root cause. When Space Exploration adds "space_tile" to the fish's collision mask (which normally just has "ground_tile"), it removes the "collides_with_tiles_only" flag. The boat also collides with "ground_tile", so now fish collides with it. I solved it with the rails by removing ground_tile from the collision mask and using tile buildability rules instead, but that won't work for the boat while it drives around. I'll check with the Space Exploration team, they should really just fix it so the flag stays.