If your code depends on call orders, then you'll have issues even without the Editor framework: as soon as you call a getter to retrieve a related proxy out of an edit()ed proxy, that other proxy will automatically be edit()ed too, so that you can write code like:
MyProxy myProxy = ctxt.edit(someProxy);
myProxy.getSubProxy().setFoo("foo");
without the need to edit(myProxy.getSubProxy()) and store it in another variable.
IMO, you'd rather change your assumptions on the server-side to no longer depend on setter's call order.
(FYI, the Editor calls edit() on each subproxy because it "walks" down the proxy passed as argument, which may or may not be edit()ed itself; and each ValueAwareEditor or LeafValueEditor is passed the "non-edit()ed" proxy, the edit()ed one being used only on flush())