It's a combination of things. The physical development is tied solely to training(unless the ol' medical bug comes into play). Glove/arm accuracy is playing time and fielding instructor. Contact/splits/eye are tied to playing time and hitting instructor. And, as article points out, age makes a difference. It's dumb to put a 22 y/o draftee in rookie then progress him one season at a time(making him a 26 y/o in AAA).
My example of Forster was a bit disingenuous as he was never going to be much of a hitter so most of his development was going to be tied to my FI. Nonetheless, I was using him to prove a point. His development pattern fits perfectly. It's as if I started him in LoA and moved him up one level at a time.
But, in my experience, repeating a level doesn't change the pattern. I treat RL/LoA/HiA pretty much the same. A player could start at any of them and repeat it the next season based on coaching. They could be promoted to AA in their 2nd full season but, if my AA coaching sucks, they may go straight to AAA or repeat HiA. If promoted to AA in 2nd full, they are on track for AAA in 3rd full but, if AAA coaching sucks or if playing time is blocked, they may repeat AA. I just haven't seen any evidence that I'm hurting development. Pretty much all of them follow the 50% rule(half as much as the season before).