Poking around a bit more, growths aren’t read by the autolevelling routine. I’ll do some more searching tomorrow, but it seems likely that you’ll need some asm to do what you want.
Edit:
As suspected, the autolevelling function is quite a mess. To flag a unit for autolevelling, set their base HP to be one of a few specific values. These values specify which set of ‘growths’ to use when levelling a unit.
VAL HP STR MAG SKL SPD DEF BLD LUK MOV
$FF 50 20 3 15 10 15 15 10 0
$FE 30 3 20 10 10 5 5 10 0
$FD 70 20 0 15 15 10 20 10 0
$FC 70 25 5 25 20 25 25 20 0
$FB 50 5 25 20 20 10 10 20 0
$FA 90 25 3 25 25 20 40 20 0
$F9 75 50 50 50 35 35 40 20 0
$F8 45 25 25 70 70 25 20 50 0
$F7 50 20 3 15 10 15 0 10 0
These growths are at $888246 (mapped, unheadered) and are preceded by a short pointer table with a pointer to each.
The formula the game uses to determine which pointer to the set of growths to use is:
(((val XOR $FF) + $01) << $01) + $888232
There’s quite a bunch more going on here, including the stuff I had you try before, which removes the initial variance. If you really want enemies that follow their growths, you’ll have to learn 65816 or wait for me to write a fix myself.