Why to use Perl or Python when you can use plain C?
Perhaps because the same thing that takes 1000 lines (hard to debug and error-prone) in C would take 100 lines in Perl or Python, and 10 lines if you find the correct library that already solves most of the problem? Perhaps because the productivity of programmers in high-level languages is 10x higher than in low-level languages?
I never asked Dennis what languages he would use for which problem. Sadly, we can't ask him any longer, he's gone. But he did work on a system that also had languages like ksh (written by his friend Korn) and awk (written by his friends Aho, Weinberger and Kernighan) available, and I would bet that for many problems, he used scripts.
Suggestion: Take a small programming problem, such as "write accounts receivable and billing, with interface to a part number database, a customer database, and an accounting database". Write the first solution in straight C, including all the string manipulation that is required. Then write it in a high-level language that has string processing, database interfaces, print formatting built in (like the old dBase language, or in Cobol with Codasyl interfaces, or RPG-3), and you will find that the solution in those languages is much easier, maintainable, faster to write, and less bug-prone. Just getting the string processing to work correctly without any memory leak bugs in C requires enormous discipline and attention to detail.
I wonder why today *BSDs aren't more focused on ...
Because they can't focus on a single thing. If you want a system for educational purposes, you are better of with Minix. If you want a system with X, you are better of with Y, and so on. The *BSD, by their nature, have to be a compromise.
By the way, you do know that it is perfectly possible to use (object-oriented) C++ in the kernel of the various Unix-like operating systems? I've written plenty of C++ code that implements kernel functions such as file systems.
see source code of PDP-7 for instance.
The first prototype version of Unix for the PDP-7 was not written in C. It was written in assembly. I don't remember when C came in, but it was about the same time they moved to a PDP-11. And the history of C is full of other languages, with names like "B" and "BCPL".
Programmers MUST be fluent in C. This is basics.
Actually, that is very doubtful, and a matter of great debate. Good programmers must first and foremost understand good software design, and good engineering practices. It is not clear that low-level languages (such as C or assembly), with their attention to minutiae, foster that thinking for beginners. At some point, a good programmer also has to understand how real-world computers actually work, but C doesn't describe the load/store/register/ALU/... architecture of modern CPUs terribly well.
The other question one has to consider here: do you want to educate programmers, software engineers, or computer scientists? These terms are not at all synonymous, and require different (but overlapping) skills. I think most CS and CE degree programs today use Java or python as the first language.
Disclaimer: I was taught programming before C was in widespread use, and learned PL/1, Pascal, 370 assembly, and Fortran and Cobol as high-level languages. With a lot of Basic and microprocessor assembly thrown in for small computers.