The main problem is that we set grades by age and not skill. This causes a couple problems. Kids might be better serviced by staying behind a grade, due to something as simple as maturity. The flip side is that the 'smarter' kids for their age, those who are able and ready to move up can. Right now, educators are hesitant to do either, especially given how it is frowned on to hold a kid back by parents. So they just move them on, put them into remedial classes that move slower. How are you supposed to catch up when you are moving slower? The more able are just stunted into sitting their while the teachers help the slower kids.
The system is designed as a lose-lose scenario.