My bad. I found an unnecessary UIPanel within the clipped Panel, which caused other issues too. Any way, after removing it, NGUI works beautifully.
In case anyone else wants to regenerate the scroll panel content, here is how to restore the panel to where you left it off:
// Restore the scroll position
transform.parent.GetComponent<UIDraggablePanel>().SetDragAmount(0f, scrollValue,true);
// Restore the clipping range
transform.parent.transform.GetComponent<UIPanel>().clipRange = clipRange;
Am I right?