Yes, some work has been done in order for the tree to be able to update the children incrementally. In fact, AJAX expansion/collapsion either as re-rendering on selection share almost the same code, so it should update smoothly.
1. Yours solution is definitely more complicated for the end-developer, than simple usage of ajax-typed tree - e.g. because of the need to implement nodeSelectListener.
2. You can expand/collapse tree node without selecting it.
3. Some use cases require immediate server interaction for expansion and does not require this for selection at all.
4. You can re-render node only without its children on selection, but still be able to expand/collapse it by AJAX.
5. Does client-typed tree do correct demarcation between nodes and leaves if they are loaded partially?
6. Collapsing tree nodes by AJAX removes them from the client, thus freeing browser memory.