Well, there are reasons why people use Instantiate() over AddChild().
Just like other NGUI users, I have a UIGrid that gets populated dynamically. In Editor mode, I simply don't know how many children the UIGrid will have. So, I need to populate the UIGrid via:
foreach ( string shipName in tradedShips ) {
GameObject b = (GameObject)Instantiate ( buttonGenericGo, Vector3.zero, Quaternion.identity );
b.transform.parent = transform;
b.transform.localScale = Vector3.one;
NGUITools.SetActive ( b, true );
}
and then call Reposition(). In earlier versions of NGUI that did not work. As a fix, I used a Scrollview-as-second-camera setup in the past. But then, a changing number of UIGrid children would leave the UIGrid or scrollable content in the wrong position. Somewhere in the 3.6.x range of upgrades you introduced fixes for that (wasn't it related to the Start function?). Right now I am using NGUI v3.6.9 and I am somewhat hesitant to upgrade, since now it works.
Here you have explicitely stated why AddChild can not be used in the case of UIGrid. Is the official policy changing?