From my point of view, the spec as is in JSF 2.2 should support something like this:
// Dynamic include
Map<String, Object> attributes = new HashMap<String, Object>();
UIComponent component = vdl.createComponent(facesContext,
The idea is very simple: if multiple components are inside an xhtml fragment, just return one parent component that wraps everything. If it is just one, return the same component. I made a working prototype in MyFaces some weeks ago about this idea and it works very well, because inside vdl.createComponent(...) it is possible to put the necessary code to make it work programatically, something that just does not work well doing it through FaceletFactory, which I still consider a bad idea.
I like this approach because it is totally "decoupled" from the underlying vdl implementation.
Note I don't know if that approach works for Mojarra, or if the original idea has this in mind(I suppose no).