The consequence of not loading controls in init is that when properties are changed in the view state, they will not be saved in the controls. For example, if at the first request of the page you dynamically create controls in init, and then in the response message you create them again in init, then after init all the property elements in the viewstate will be applied to the control.
So, if you first created the control in the click event of the TreeView, I would suggest that this should be good, because there is not yet any drive that will be applied to the control since it was just created. However, I'm not sure if this will cause the control to not maintain the viewstate status. You will have to experiment with this.
In subsequent postbacks after the first, now you will need to create a control in init for the copied viestate, which will be applied to it, so you need some mechanism to “remember” that you created the control once before, the response to the click event and then on subsequent postbacks again create the control in init. You need to recreate the control for each request if you did not know this.
So, the question is, how important is the viewtate to the control.
Edit: I will also add that I'm not quite sure if there will be other consequences, besides how this affects the viewstate.
source share