I feel the compatibility level facility is a technical fix for a human problem.
In the ideal world we would be able to install the latest SQL Server edition an have all our databases tested at the latest level.
In the real world our new development will be done at the latest level, those apps where an upgrade provided a solution to an existing problem will be ported. The other applications will be ported in their own good time as business priorities allow. The human problem is that fixing unbroken apps is always going to be at the bottom of the list of priorities.
I feel that compatibility levels are OK as a safety rope to allow you to upgrade your databases but, to use a climbing analogy, I like to have 3 points of contact with the rock face. I never quite trust that rope.