There's a few problems with PickSpawnPointBothPass which is used when ships sink.
In this sequence I've deleted the ship on the left and ungarrisoned the ship on the right. It seems weird that if we click ungarrison right before the ship sinks, we could save all our units instead having them all die (on Flood they're saved anyway, but on most water maps there's no overlap between the passability classes so all the units die).
One issue is that the ship has a much larger radius than infantry, and the radius is factored into the passability class, which you can see in the first screenshot. Another issue is that spawn points are tested for collisions against the ship too, even though it will disappear shortly. Those two issues could be solved in a different way, but I think we should prefer consistent behavior with ungarrisoning before death.
As I mentioned in a comment to rP14550, I'm not opposed to using EjectHealth = 0.1 for ships to make them consistent with other garrison holders, which means that units will try to ungarrison before the ship sinks. I'm not convinced about this though, so I haven't included the change in this patch.
Also it seems to me if units can garrison they should be able to try to ungarrison too, so I don't like EjectUnitsOnDestroy. But again that's not included here.