As a professional CS educator, I'd agree that the mixed nature of the introduction classes is actually a serious problem. Roughly half my intro students are basically completely new and and the rest have a mixed backgrounds of being hobbyist programmers.
I also frequently teach another course, which is an introduction course to programming required by communications majors(and different than the CS one), and it's a world of difference. In that class, virtually everyone is starting at ground zero, and it makes my lesson plans much easier, more consistent, and I can say with great confidence that the people who take the non-CS intro course, finish further ahead of the non-programmers who take the regular CS introduction course. Unrelated but I'm actually writing a book that targets this audience, since it's pretty under-served ("Introduction to CS for Reluctant Programmers").
The problem basically boils down to this, in the first class, you as an educator have to play a balancing act. You can't outpace the beginners, but you can't go slow enough to bore to death the hobbyists. If you go too far in either direction, roughly 1/3 of the class will just bomb out because their needs are not being met(and that reflects badly on you, the professor).
I've done it enough times that I would say there is no way to properly balance this dilemma. I've been advocating for awhile that we should split our first 6 introduction sequence into two tracks not THAT dissimilar to what that university is trying. Except that I think they should be separate tracks that just meet further into the program, and not segregation inside of the existing classes.