Don't use that UIGrid.AddChild method. It doesn't work the way you expect. It simply changes the parent. It won't work properly until Unity 4.6 or so when the feature it relies on will actually function properly.
If you want your children to appear in a specific order, sort them. Set a sorting function and enable sorting.
P.S. You should also update your NGUI, because that function has been commented out a while back.