I've been watching the internals of the kernel for a while now. In the older 2.2 kernels, the code was smaller and there was a lot of micro-optimizations. Some of these optimizations caused for quite a head ache to understand what they were doing. But this was fine because the kernel was small.
Then the kernel reached adulthood, and became a more prime time competitor. It now has lots of rich features and runs from small embedded devices to boxes with more CPUs than the cows on my street. This made the kernel larger and more complex. Now adding micro optimizations that causes more complexity is looked down upon. We now are focusing on maintainability over getting that last 0.5% out of the box.
I've seen several decisions to choose cleaner, more maintainable code over the split second faster code that can only be understood by the goblins of Geek Heaven. But this is a Good Thing (TM). It makes the kernel more maintainable. And looking at any of Corbet's kernel talks, the amount of churn that Linux takes, needs all the maintainability it can get.