That's my own Init function. I've tried renaming it to InitSetup() and then tried calling that with GetComponent instead of SendMessage, but the results are still the same.
I notice that if I select the page of controls twice, I get a different layout the second time (still not properly aligned), but subsequent repopulatings of the table don't change it. If I run Repopulate() twice in code, it makes no difference.
Edit: Okay, that pointed to the problem. I am removing the contents deleting the children with Unity's Destroy. Using NGUITools.Destroy(), problem's solved.