Just by instantiating a prefab via NGUITools.AddChild, local position will be reset to (0, 0, 0). It's a part of NGUITools.AddChild -- just look inside that function.I always get the object non-centered no matter if I comment "t.localPosition = Vector3.zero;" in NGUITools.AddChild or not and no matter if I call Reposition() or not (although Reposition() gives me slightly smaller offsets).
You yourself said that the table is disabled, so I am not sure why it would be changing anything. Have you tried removing the table to see what happens?If I instantiate my child object in an empty GameObject with UITable component disabled I get it centered.