If you have an FSM that must run before other FSMs then you have to enforce this explicitly. In other words, other FSMs have to wait until the first FSM has run. Even if it seems to work sometimes, Unity does not guarantee the update order of MonoBehaviours.
There are many ways to do this:
- Have the first FSM run then load a scene or prefab containing the other FSMs.
- Have the first FSM broadcast a "Ready" event and other FSMs wait for this event.
- Other FSMs start disabled (or in a disabled branch of the scene hierarchy) and the first FSM enables the other FSMs (again using scene hierarchy makes this easier).
- Next Frame Event will also work, but like you said it does add some complexity to other FSMs.
Those are the most common strategies. You could also try giving your globals default values so they are never null, but you have to be careful other FSM don't use these values in unintended ways.