I have a lot of respect for jQuery. What little sanity I have left after dealing with JavaScript is mostly due to jQuery. But jQuery is not an appropriate mechanism to add/remove JSF View elements, since the View is generated by the server and jQuery operates on the client. AJAX is much better for that.
I have, in the years since I have been working with JSF (2006) only developed
one application that dynamically modifies the JSF Component tree. It builds a data entry form based on interpreting general-purpose database schema definitions (It's a general-purpose database table editor). All of my other dynamic page layouts have been done by simpler means.
In most cases, you can dynamically add elements to a View by containing them in a dataTable or a ui:repeat construct. These components can replicate elements as needed, based on data in their respective Models. Dynamic partial-page updating can be done via AJAX, which will can the model to re-render the affected areas.
A JavaBean that's loaded with framework-specific code is
not a POJO. POJO stands for Plain Old Java Object, and the ideal POJO works identically both within JSF and totally stand-alone (for example, in
jUnit tests). In fact, a true POJO can be shared between multiple frameworks.
I do quite a bit of dynamic page work myself, so I'm not just speaking theoretically here. JSF really can accomplish a lot without requiring framework-specific coding, and that's by design, It's an Inversion of Control architecture where stock objects are wired together and controlled by JSF itself as opposed to more traditional systems where the program has to do all the work itself.
There are, of course, limits to what you can do in JSF without accessing the component tree, but they're not all that common. For one thing, once a page layout gets
too dynamic, users get confused and you can't point to a picture in the documentation because what's on the screen won't look that much like the picture.