Yes, it seems the horde AI has to make the decision to sack or settle after a siege battle. They're incapable of making that decision at any other time so gifting the horde regions by any means will always fail to force them to settle. Failed methods to force a horde to settle in a particular set of regions (to my knowledge):

- give_everything
- capture_settlement
- auto_win siege battle
- diplomacy
- faction_emerge
- revolt to shadow faction

Workarounds:

- make the horde start settled on the map (descr_strat) - this obviously only works for particular scenarios
- give the faction "no" family tree and not a real horde - this precludes the faction from having a family tree
- start the horde far away from a region with horde_target and teleport them nearby and then 'move' into the region - based on the premise that hordes will refuse to settle in horde_target regions unless they're far away enough from their original spawn point, remains to be tested
- auto_win repeatedly (using a while loop) until the AI changes their mind and settles - assumes there is RNG involved in the AI's decision, remains to be tested