If I understand your post correctly, you should be using UITable instead of UIGrid. UIGrid always spaces things evenly.
Also you should really take a look at the Quest Log example that comes with NGUI.
You havn't understood correctly.
Let me explain again
All UITalbe and UIGrid are vertical align and single column.
===========================================================
ClipedView Panel (Cliped Size Y is 200)
--UIGrid with many children,total height 500 (300 will invisible cause clip size is 200)
===========================================================make this a prefab called ITEM
create a UITable,put many ITEMs input the UITable
with hierachy like
UITable
--ITEM 1
--ITEM 2
--ITEM 3
Expect positions are
ITEM 1 at Y 0
ITEM 2 at Y 200 (ITEM 1 clip size Y is 200)
ITEM 3 at Y 400
Actual positions are
ITEM 1 at Y 0
ITEM 2 at Y 500 (ITEM 1 total height is 500,clip size ignored)
ITEM 3 at Y 1000
UITable reposition do not consider Clip size,but using real widget size.