Labels do work with "move". 
Killersmurf's script should do the trick, although you might get a warning in the log if the label doesn't contain a number. e.g. Use psfgarrison1.
However, it will only work the first time. The second time you'll get a "label already exists!" error and the army won't spawn. Either you'll need to use a new label each time or use a character name instead of a label (but then there are duplicate-name issues which this solves but might be overkill).
EDIT: hold on a minute...
If you use a general instead of a named character then label-reuse isn't a problem and there is no need to kill him afterward.
Code:
spawn_army
faction {faction}
character random_name, general, age 32, x {x1}, y {y1}, label psfgarrison1
unit {garrison unit} exp 0 armour 0 weapon_lvl 0
unit {garrison unit} exp 0 armour 0 weapon_lvl 0
... however many you want...
end
move psfgarrison1, {x2}, {y2}
where x1,y1 = outside of the fort and x2,y2 is the fort