Ok. First a simple way to highlight the problem:
monitor_event BattleConflictPhaseCommenced
battle_wait 3
unit_group_set_morale Allies routing
end_monitor
The result in game:

Only the main army is fleeing, and no matter whether the units of the reinforcement are in or out of the battlefield, they won't be affected.
Next, if you had a battle_wait 1 to the script, in this way:
monitor_conditions I_BattleStarted
inc_counter deploy_check 1
if I_CompareCounter deploy_check = 1
battle_wait 1
log always Battle Started
set_counter start_battle 1
end_if
end_monitor
Then it works for the two armies:

So, in conclusion, the units of a non automated army cannot be labeled before a point in time (which seems to be more or less synchronized with the apparition of their cards).
I hope this is more clear with pictures and scripts than with my terrible english