It was indeed a bug with FormerlySerializedAs and child prefabs. Hacked in a better fix. Here's the exact bug:
- Base prefab has the new name (isMobile).
- Child prefab has the older name (needsVehicleTick).
- Base prefab sets isMobile to true.
- Child prefab has needsVehicleTick on false.
What should happen: Unity erases the needsVehicleTick entry and replaces it with an isMobile one.
What actually happens: Unity won't let you change isMobile in the inspector on the child at all, and it carries whatever value needsVehicleTick was last set to.
My fix here: Erase the needsVehicleTick entries manually from the child seat .prefab file data. Looks good; they now inherit correctly from the parent's isMobile setting.