ok found it.
The BattleUnit class has two constructors, one for soldiers, the second for aliens. Only the aliens make a call to adjustStats(), which levels them up per Difficulty. unfortunately this bit of protective code:
if (faction == FACTION_HOSTILE)
{
adjustStats(diff);
}
in the second constructor prevents mind controlled aliens *that are reloaded* while Mc'd from getting their difficulty bonuses. Because units are saved to file with their FACTION value: 0 for soldiers, 1 for aliens. Hence even though Mc'd aliens still use the second cTor, that bit there thinks they are Faction_Player...
ie. by commenting out the condition, things returned to what I think they should be. But who knows, maybe others want mind-controlled aliens that are reloaded to be Beginners ....
workaround: do not save reload while having an Mc'd alien.
tl;dr It takes someone with more knowledge of what those 2 constructors do than me, to make change.
[ edit ] the issue is in the bug traker..