It makes no sense to separate children by IQ - but it does make sense to differentiate by levels of knowledge; hence the ability to skip a class.
Children, to a significant degree, learn from their peers rather than their teachers or parents. If you put under performers in one group, and over performers in the other, the net effect is that both groups learn more slowly than if you had mixed things up and let the best skip a class until they are no longer over-performing.
That makes some sense to me, but by letting "the best skip a class until they are no long er over-performing" you are basically differentiating by ability. "Ability" may be defined more by knowledge than anything else, as you say.