I have checked with the RI impl they dont have this problem.
In myfaces if i have any type of component like f:param and f:valuechanelistener etc before f:selectitem or f:selectitems SelectItemsIterator and _SelectItemsIterator does not return correct value for hasNext().
I have added the following patch to both the classes SelectItemsIterator and _SelectItemsIterator so that they ignore the children which are not UISelectItem and UISelectItems.
UIComponent child = (UIComponent) _childs.next();
while(!(child instanceof UISelectItem)
&& !(child instanceof UISelectItems))
child = (UIComponent) _childs.next();
Pls comment if this approach is not suitable.
i'll add a patch for this soon.