It's been mentioned in a few of the posts, but the age of the kid relative to his classmates is really important. If a kid is already older than a lot of his classmates (typically birthday just missed the normal cut-off date for a school district) and then he is held back another year, that can be really hard on the kid. In today's information age, kids know how old kids are and they will think a kid who is that much older was held back because he could not handle school.
You can go to the PG website and see how old a player is. We had a kid we knew who was a junior in HS but was older than all but one of the seniors on the team. They used to call him "old man" and such and he was good natured about it, but I wonder what he really thought. But if a kid is young compared to his classmates and tends to be grouped on 12U and 14U teams with kids at the grade below him, holding him back makes more sense.
Definitely not a decision to made hastily and without full support of the kid.