Speaking from my experience in the software world...
[...]
I agree with large parts of your post.
But, atleast in Dutch universities, there is some emphasis on group collaboration on projects. But I'm afraid this is not completely driven to benefit the students, but also to ease the workload on some of the profs/PhDs/student assistants. 45 candidates for the course? Pff, what if I let them make groups of 3, only 15 project reports to read. Wow that's a lot of work saved!
Additionally some people can hide their incompetence in assignments and group work. You can team up a good coder + bad coder, both a good grade for their assignments. People can copy solutions from each other assignments, etc.
Once we had an assignment & test in a software course. Some groups were boasting they got an 8.5+ average on the assignments. They barely passed the test with a 5. There was a prominent gap from 4.4 to 5.0, because any grade <5 was a fail for the complete course, so they got the benefit of the doubt probably.
I can rage about writing code on paper tests and all, but that is primarily because of lack of convenience. In the end, it's still "writing code". People that want to go into software development should be able to read code and just understand it without tools explaining what their work does (especially embedded which sometimes a lack proper debugging tools).
And even at a graduate level, it isn't self explanatory that people have these skills. There was also a course on programming in C++, that supposedly as of "advanced" level. It started out explaining what C header files were and that C++ contains something called classes. It was dumbed down to the level for people that know what if-else and for loops are, but not much more. The aimed end level of the course was to write a project with some classes that used inheritance. "Advanced", graduate level?
On the other hand, some of the things I mentioned is also just hands-on experience, which is barely touched in graduate courses. I think hands-on experience can/should be gained outside of university, i.e. hobby projects, or if you're a
willing desperate employer, on the job. Eventually you still see a difference in people that have done programming ever since they were a kid and became "infected (same goes with electronics). The people that keep doing some projects in their spare time, etc. You can find these smart people in university as well, but they are certainly a lot more rare.
I think the biggest take away for someone that finished university, is that they don't need every formula spoon fed to them. As said before, the formulas for volume/surface area of spheres/cones/etc. at a graduate level Calculus are shortcuts rather than "I need to use this formula to calculate this". We derived these 'shortcuts' by hand with volume and surface integrals. It was basically exercises 1 and 2, because they were some of the simplest shapes... the very weird shapes became much more interesting to calculate.
What value such understanding and different skill set has depends on the position and perhaps the company. Practical skills are also invaluable, and you certainly don't need university for that (look at all the self trained people around here doing amazing stuff). But for some positions, a degree is the only foot between the door you can get.