I take classes at a decently ranked public school, and many of the students are not having tuition paid by scholarship or endowment. Their parents are certainly not paying the full ride - they may contribute a little, if anything. Students can't always get all the loans they would need, and it doesn't make financial sense to pile too much of that on. So plenty of people are paying out of their salaries. I do this and many of the people I speak with do this.
You talk about full-time classes and a full-time job. Actually some of my classmates are raising children or that sort of thing as well. But beyond that, you're correct that it is hard to take a hard STEM major full-time and also work full-time. It would be almost impossible to maintain a 4.0 or 3.9 or whatnot. The solution is obvious, don't take a full course load - take three classes a semester, or perhaps two, or perhaps one. It takes longer, but what is the alternative for those who can't afford full-time study?
If some 18 year old can't really afford full-time study...then don't do full-time study. Why make your parents shell out thousands they can't afford, as well as burdening yourself with enormous loans, for something you may very well not complete in four years. Some kids graduate and are not working - a lot nowadays. On this public school commuter campus, the smarter half of the CS major seniors I know have never heard of software version control, have no idea what git, Perforce, cvs etc. is. Most of our professors are good too - most of them understand their topics, and some are even good at explaining it. A dedicated person can get a lot out of the education, and then perhaps go get a Masters at a more prestigious school afterward if they want.
If people can't afford fulltime, don't go fulltime. Maybe the government should help more, maybe not, but if someone can't pay fulltime they should go parttime.