One remaining nit: after running the script, all objects appear on their proper layer in the Layer treeview, but the property panel shows "Default" instead of the layer indicated by the Layer treeview.
I tried view.RefreshView(), but that had no effect. Is there another kind of refresh required to make the property panel show the updated value for layer?
Everything works fine, so this is simply a minor display problem I can live with.