Ah, we disagree on that then - I think the more complex but robust system is better.
Consider: if you have spell-name-only counters, then you can still not force the AI to use a specific spell as a counter. Assume you specify "A", "B" and "C" as counters; it could just be that the AI decides to stick to "A" and "C" and simply not use "B". You could implement it that there's a percentage weight indicator with each spell-name specified; or make the order of specification relevant, but that doesn't really solve the underlying problem.
Consider additionally: the [tag] system itself would be part of the AI system; so getting back to "Spread Disease" [disease], [resistance], [immunity], let us assume that the AI knows two spells that would qualify as valid counters:
"Immortal" [all-damage], [immune], [self-only]
"Panacea" [disease], [resistance], [aoe]
The AI can now, based on its sovereigns preferred strategy and the current tactical situation decide whether it wants to protect just one unit perfectly; or all units partially. If it is the necromancer, he doesn't care about his minions (and they (undead) tend to be disease immune anyway) so he uses "Immortal". But the nature-loving hippies from the Rondo mountains have large masses of weak forest creatures that win by overwhelming by numbers - and here the AI prefers the [aoe] spells. Factors like own-army composition, casting time, casting cost, etc could all be captured in the evaluation process and balanced against the options available.
Let us extend the AI's thought process by adding the following tags:
"Immortal" [all-damage], [immune], [self-only], [short-duration], [medium-cast]
"Panacea" [disease], [resistance], [aoe], [permanent-duration], [slow-cast]
"Crystal Cures" [disease], [poison], [resistance], [aoe], [short-duration], [fast-cast]
Suddenly the AI can decide if the spell is a suitable counter given the time available; or the time required for it to be useful. Additionally it can see that "Crystal Cures" provides protection against an additional damage type - and it might know that the enemy uses blight magic (disease and poison). Alternatively, it may know that the opponent doesn't have access to poison magic making "Crystal Cures" less attractive.
The point is the tags allow the AI to develop a form of understanding of the function/purpose of a spell - allowing it to make more informed decisions.
Consider this case: "Purge Unclean" - reduces the targets fire-resistance by 50, but gives the unit immunity to disease. This is a valid counter for "Spread Disease"; but it might be a horrible idea to cast it if the enemy is a disease spreading pyromaniac. A spell-name-only counter list cannot capture this nuance at all; a tag system could be able to.