The gripe is that some students are less prepared than others, making it difficult to design courses? You're always going to have that problem. In the third-semester CS course I just finished teaching, there were 25% CS majors that took the prereq in Java, 60% or so CPEG or EE that took it in C++ two semesters ago, and the rest took prereqs at community colleges or abroad. Depending on what they took and their background, they were unprepared or overprepared. You can't teach to the least common denominator; you end up balancing the curriculum so that it's sub-optimal for almost everyone, but equally sub-optimal for many students.
The music analogy is awful - it's reasonable to expect prior music experience for a music major and unreasonable to expect them to place well in the orchestra right away. The "CS is not programming" comments aside, maybe they don't have any background due to their highschool (although that shouldn't stop a hobbyist). So you solve the problem by having an "intro to programming" first semester and placing many students out of this course (that's what happened to me in undergrad and it was fine). Or you have them take remedial courses first because they're behind.
Getting back to CS1 - passing the course doesn't mean you can program anything. Depending on the school, it means you can write toy programs, typically with awful readability/performance and typically it doesn't indicate that you understand recursion, pointers, complex data structures, etc.
The most important thing is that every school is different and struggles with different problems. Some schools prepare you for a PhD in CS, some schools prepare you for the workforce, some schools prepare you for nothing at all, some prepare you just to learn and deal with strict requirements, and some mix a little of it all. It's absurd to try and make a general claim about computer science in general.