I suspect this is a limitation in functionality - is the RadTreeView meant to persist changes to Nodes dynamically added on Demand in Server Side AJAX (out of the box)? I have tried with ViewStateMode="Enabled" and PersistLoadOnDemandNodes="true" to no avail.
It seems that client side changes made in JavaScript (between client side trackchanges() and commitchanges() calls) aren't recognized when the nodes are dynamically loaded with this server side event:
protected void RadTreeView1_NodeExpand(object sender, RadTreeNodeEventArgs e)
When the page is posted back with a Save button, and (for example) nodes are removed in javascript - the changes seem to disappear on the server side. I suspect it's because the ViewState in the posted back control and javascript client changes are out of sync. They exist in the client side javascript ._log property until the commitchanges() is called. Then the changes all disappear and don't exist in the server side ClientChanges property on postback. None of the the provided demonstration examples seem to show support for updates, just read only load on demand scenarios.