Potential exists across a spectrum, rather than being five distinct values. That is to say, not all "a lot of room to grow" players are equal (potential-wise).
I don't know the actual values, but to demonstrate the point, imagine that there is some hidden potential number for each recruit. That number ranges from 1-100. Now, the potential reports might break down something like this:
80-100: Sky is the limit
60-79: A lot of room to grow
20-39: About reached his potential
1-19: Tapped out
So then imagine two recruits, A and B, where Recruit A has a potential *number* of 79 and Recruit B has a potential number of 80. If you look at their reports, you'd see --
Recruit A = "A lot of room to grow"
Recruit B = "Sky is the limit"
Now, without knowing the actual number (as we do not), you might be inclined to believe that Recruit B will outgrow Recruit A - with all other things like WE and practice and games played/started and attribute values being exactly equal - but the reality is, in this scenario, both will grow roughly the same. The tough thing here is, you cannot know where a recruit's potential falls within each respective range. With that being the case, then you must make the assumption that all recruits of a given potential report are the same (potential-wise) and go from there.
One only finds out if their recruit is an upper-bound "A lot of room to grow", or lower-bound, after they are already on your team and you have a few seasons of growth from which to approximate their place within their given range.