This kind of goes to my point of there not being levels, per se, but rather job roles and functions. An expert may not need to have the same communication skills if there happens to be a good business analyst on the team that can bridge the communications gap. I personally have found that after many years of application development, my ability to relate to the user has declined. I simply can't always think of ways to simplify concepts that have taken me years to learn. Sometimes this can be very confusing to the typical user. It's as if I forgot how to speak English.
This is likely to happen to any specialist or guru if they've been in the business long enough. Ultimately, having the right mix of people for the job will make the biggest difference. Having a single person with lots of experience may not always be as good as having 2 or more people with less experience, but complimentary skills.
I was going to respond to your message earlier but thought you made such a great point, nothing futher was necessary.
You are certainly correct, and an additional point could be that both experts in one language / environment / skill as well as jack-of-all-trade types complement one another very well. (I tend to fall into the latter category.) Diversity of team members, within reason, generally tends to produce a better result. (I add within reason for the sole purpose to exclude a team consisting of something like one each of Java, Python, SQL, and .NET developers on one team, which would lead to too much confusion and no productivity.)