The problem is that if an FSM relies on the setup of a bunch of other FSM's (5 or more), broadcasting or testing bools from each becomes very tedious and complex and a Wait is actually much simpler.
I kindly disagree, see, of course it'll take a tad longer, but it would still work out if you say wait for 5 fsms to finish you'd:
1) create 5 bools
2) have each fsm set one bool on finish, then have them each send the global event "Go" to that one FSM that's waiting
3) in that one fsm, have a state that is triggered on "Go". In it, use 5 bool test actions. Create 2 transitions for that state: 1 is FINISHED, the other is FAILED . Now set the bool test actions to return FAILED if the bool is false. Now, if all of your bools are true, the state will return FINISHED, since that is what's triggered if you run through a state without triggering an other event.
This way there really is no large setup and no performance issues whatsoever.
And let's be honest, we wouldn't be able to work any more efficient in a normal scripting environment, so why'd you think it should be better here?
EDIT:
alternatively you could use check state actions here too
You would have to stick to the naming, but you'd save the 5 bools