I’ve just started reading through Core JavaServer Faces, 3rd Ed. and they say this (emphasis mine):
It is a historical accident that there are two separate mechanisms, CDI beans
and JSF managed beans, for beans that can be used in JSF pages. We suggest
that you use CDI beans unless your application must work on a plain servlet
runner such as Tomcat.
Why? They don’t provide any justification. I’ve been using @ManagedBean for all the beans in a prototype application running on GlassFish 3, and I haven’t really noticed any issues with this. I don’t especially mind migrating from @ManagedBean to @Named, but I want to know why I should bother.
CDI is preferred over plain JSF because CDI allows for JavaEE-wide dependency injection. You can also inject POJOs and let them be managed. With JSF you can only inject a subset of what you can with CDI.