Personally, I heavily event the AI, especially for late game bosses. What this means is I may have the AI set up to do 1 of 2 actions on round 1, then 1 of 2 actions on round 2, round 3 is a free round (pick randomly from a pool of weak attacks so the party can recover), round 4 is the it's gonna hurt round (sometimes choose 1 of 2 powerful attacks, sometimes always the same attack), and so on.
Once I get a pattern of 5 - 8 rounds set up I just let it repeat, though sometimes I'll also have it throw a curveball every other loop, if the fight's even intended to last that long.
As for enemy healing, what I've done is set it up so that most healing spells are used only when the caster has < 50% HP. That way the spell is usually not a complete waste, especially if the healing spell targets all in the enemy party.
Buffs are harder. I usually set up all buffs for the enemy to be either target all enemies or target the caster only. That way I know exactly who will be buffed then. If I keep it random target it's usually a buff that you will want to dispel no matter who it is on.
Seems to be working so far, but then again most of my fights (even bosses) are meant to be over within 10 rounds, with the only exceptions the mid-game and final boss fight.