In other words, I'm very happy with my CS degree, but I learned almost all of my software engineering skills outside of the classroom.
Me too.
I have to believe that this is the norm, not the exception. No matter how much you learn in school, you're never completely ready. You'll probably pick up much, if not most, of what you really need to know on the job.
I worked for 16 months in between 3rd and 4th years where part of my job was doing requirements gathering. When I went back to school I had a course that included a section on requirements gathering and I know for a fact it would have made very little sense had I not done it for real beforehand.
I don't really know where it comes from, and my pet hypotheses are too ugly to share, except that their nicest parts have to do with people believing what they want to hear, not what is true.
The mystery is why they now need to be told this, rather than showing up with them already.