The problem with saying we should use a subset of C++ is that it will never happen. There's just too many contributors to enforce such a thing. There's too many places that people may use side effects of C++.
You state that good C++ is easier to read and understand. I'm saying that bad C++ code is much worse to figure out than bad C code. And unfortunately, there just happens to be a lot of bad C code in the kernel. It does get cleaned up over time. But with the huge number of contributors, crap just keeps slipping in.