As far as you're enabling AI in editor or lobby, playablesUnits will return all units playable.
But, unchecking "enable AI" (editor), or disabling AI(s) in lobby, will make playableUnits same as allPlayers variable.
Just playing units. But Every JIP can pick up the disabled AI slot, so, at strict sense, all these slots are playable.
Furthermore, in this case, non-played slot (playable and disabled AI) units simply don't exist before JIP!
i.e. If you name 8 playable units: u1..to u8, then 2 players in game: u3 & u6
playableUnits will return [u3,u6], and true for isNil "u1", isNil "u2"... until another player takes the slot.
Annoying for any scripters looking for the same behavior regardless of disabled AI. Allpayers is working fine for that. Please, make playableUnits what it's supposed to do, like in the case of enabled AI.