The circumstances which cause it to occur are known but the underlying reason is not. The loyalist revolt CTD does *not* occur because no troops are available (that merely made the problem more apparent) because the game can loyalist revolt to (so-called) empty garrisons. It does not always do this however hence the needed recruitment line standing in as a CTD blocker through an indestructible. (applying indestructability to buildable buildings however is probably not a good idea).
I have found that removing all mercs from merc pools also solves the problem (merc availability for hire being one of the conditions necessary for the CTD to occur) - but that's a little drastic
Sinuhet,
According to my test condition for guaranteed CTD at loyalist revolt (AI or local faction) are:
1. no recruitment buildings in settlement for faction revolt to go to
2. no garrison of occupier in settlement
3. mercs available for hire in region
I think the CTD can occur even when number 2 is not true, but have not tested - Makanyane says it occurs less when 2 is false.
You can test these conditions in vanilla. Just comment out the peasant lines for any faction in EDB in any government building and then go and attack a settlement of that level of that faction in-game - destroy all the recruitment buildings (if any) and then do everything you can to get it revolt (may need to remove garrison). Test with mercs and without mercs available for hire.