What this approach doesn't solve, as far as I can tell, is the problem of eventually merging together two or more long-lived feature/dev branches. Sure, you know you have no conflicts with mainline because you continuously integrate that back into your work. But what about everyone else's branch?
The point, I thought, of Jez Humble's definition of CI is that you are continuously integrating /everyone/ and /everything/ specifically to prevent the above problem.
If you have one long running branch, no issues since you do a mergeback often. All other production-ready code is integrated immediately, so all code is integrated in the long-running branch.
If you have 2 or more long-running branches, then you put them behind a centralized point and merge them up to this development branch which has a mergeback from production-ready code - so all code is integrated.
Either way, you can still integrate all code, its just not in the line of the flow towards production.
The point, I thought, of Jez Humble's definition of CI is that you are continuously integrating /everyone/ and /everything/ specifically to prevent the above problem.