"Balancing" the game with 3 damage and 3 armor types (and health) means you need to fiddle arround with 7 values per unit type - or short 7*nUnitTypes (Not considering unrelated values).
Using Warcraft III's way means you have 36+5*nUnitTypes (the 6x6 = 32 values in the unit independednt attack type/Armor type matrix , attack type, damage value, armor type, armor value and health per unit). So it's not that much of a difference and much less easy to communicate to the player what this or that attack or armor types actualy mean for the game (The mechanism is not explained ingame in WC3 but only on the webside).
Using hard counters mean you have nUnitTypes*nUnitTypes values to at least consider. That's much more - with e.g. 30 combat unit types it would be 900(!) values to balance. So IMO it's not to be uses usually - the 3 armor/attack values should be used in the common case - but only as exceptions where units are clearly meant (not 0 A.D. concept wise but in the real world back then) to counter one specific kind of unit type (Like pike vs cavalery - but that's about it, though pili where to counter shields but a shield is not a unit type ;p).
Most unit types did not have very specific roles and thus should not have it enforced uppon them, the game and the player IMO.
(Siege strong vs buildings allready is covered with the crush damage and armor)
(Arrows weak vs siege engines/buildings covered with piercing damage and armor)
(Cavalery strong vs archers can be balance with speed, low archer life and archer damage/time*[time the cavalery needs to cover the archers range] < cavalery life - basically: Cavalery is faster and have more life. Mass archers are still hard to balance but changing the attack/armor types won't change that)
Replacing damage/armor to only use 1 type and balance the rest with hitpoints would be easier for the player to understand. But it will also reduce the ability of the modders to balance their mod (same for the main branch ofc) so I'm not sure about this either.