Cargo plane uses something called Body Movers for movement, and the body is unanchored, allowing automatically snapping of your body to the plane (its a roblox feature). Same for vehicles.
Tram has a special script that ray traces the part below you and if it is a special tram snap part then the script will use CFrame to snap you onto the tram
Cargo ship however, is a completely anchored structure. The reason why you cannot stand on it is because when it is moving, it tweens its CFrame in order to move, which means it is technically not "moving", but constantly changing its CFrame (position) value, and that way roblox wont snap your body to the ship.