A study discussed in Science Daily compared 165 kids who were kept back in first grade with 600+ who were not. The reason was "academic competence, not demographics, psychosocial, or behavioral problems."
They found the usual contributing factors, such as how involved the parents are, and there is certainly a relationship between economic status and school achievement or failure.
I guess it's mildly comforting that teachers aren't keeping kids back for personality or demographic reasons. I have to believe that some of the kids being kept back are just the ones who will learn to read at 6 rather than 5, and the risk of damage to kids by keeping them back a year is great enough that they should be allowed to be behind the other kids in their class until they "get" reading. I learned to read in the second grade, which is when they started teaching it in my school.
I realize it's a hard decision to keep a kid back, but I think it is more dangerous than the one to skip a grade. You can really screw up a kid by telling him he's too dumb for second grade. He might believe it.