That to me is quite interesting. Because I know that TSR editions of D&D didn't really have a "monster math" in the way we do from 3E onwards. Nevertheless, it looks like 3E was able to use the Hit Die of 2E monsters as a baseline to reverse engineer a monster math. The reverse-engineered 3E version of the monsters were unbalanced and needed to be fixed in 3.5, yes, but the attempt was still viable.
Both AD&D and 3e had a monster's stats built around its hit dice. In AD&D, unless otherwise specified, a monster with X HD had the attack matrix/THAC0 and the saves of an Xth level fighter*. In 3e, a monster's creature type acted as its class, so a Fey with 3 HD would have a base attack bonus of +1 (HD/2), base Reflex and Will save +3 (good saves, HD/2+2), and a base Fortitude save of +1 (bad save, HD/3). This was intended to make PCs and monsters work in a similar fashion, unlike AD&D where monsters worked completely differently. You would then add stat modifiers and assorted other stuff to that in order to get the final values.
Also note that monsters pretty much didn't have ability scores in AD&D. For example, a brown bear had 5+5 HD, and as a result had THAC0 15, and that was that. In 3e, the bear is a 6 HD animal which gives it a +4 base attack, but it then gets a +7 Strength bonus on top of that for a total of +11.
The main difference between 3e and 3.5e was that 3e was more akin to 2e where you first designed the monster, and then figured out what its CR should be while in 3.5e there was at least an attempt at looking at CR first and then attempting to fit values to that. Of course, they still took the long way around when doing that – instead of just saying the CR 7 nymph should have an AC of 17, they gave it an ability to add its Charisma modifier as a deflection bonus to AC, which combined with its Dexterity works out to 17. In 4e, they skipped the middle-man and just set the stats based on level and role, with other values playing little to no role in setting these stats. For example, a bugbear has AC 18 because it's a level 5 Brute. The fact that it wears hide armor and has Dex 16 is completely immaterial – they may be used to
justify its AC, but they do not
determine it.
* Give or take a point – One of the differences between 1e and 2e was that 1e had attack tables for each class where you'd cross-reference level with the target's AC to get the number you need to roll to hit, while 2e used a mathematical formula to generate a THAC0 value. The two mostly worked out the same, but the fighter attack table advanced 2 points per 2 levels, while the THAC0 formula advanced 1 point per level. Monster THAC0 remained at 2/2 in 2e, probably to maintain continuity with old monster descriptions.