The first mod looks good. The standard deviation part still does nothing because the races will always be within 3 SD of the median, but it won't do any harm either.
The second mod still has a couple issues.
Not sure if this is intentional or not, but your custom person age variable only updates once a person has exceeded the grow up time for their age, and it doesn't track days that they are away for any reason (i.e. passing out drunk prevents maturing).
While the current functionality of updating lastAge works fine for most cases, if the player uses a potion to revert a person's age during the day after they mature, then they will be able to mature again at the end of the day (depending on RNG). Since the new age from maturing is only registered during the end of the next day, reverting the age before then will retain the daysInAge. Given few people will use this mod and want their slaves to stay young, this is unlikely to be an issue, but I wanted to point that out just in case.
On line 97 you compare height with the end of the hair length array, allowing an index out of bounds.
if rand_range(1,10) > 5 && _person.height != globals.hairlengtharray.back():
In the penis growing section, you setup to use the chance variable again, but never use it in the comparison on line 121.
if rand_range(1,10) > 3 && _person.penis != globals.penissizearray.back():
Due to the fact that the balls growing section is after the penis section, someone that has just grown balls when becoming a futa will be able to have those balls grow larger, which is not a huge issue but the previous text about the size will be wrong.
Just a nitpick, but the check for being an adult on line 80 should be near the start of the function as an early return condition, since there isn't any point to calculating anything for an adult.
if (toMatture == 1) && (_person.age != 'adult'):