PanelTabSet has modes where it can act as a UIData, and so it uses a special mechanism for row level state saving that affects child components. SelectInputText implements the correct interface to work with this. BUT, the main caveat is that each SelectItem's value must be Serializable. Otherwise SelectInputText will intentionally not store the SelectItem, since that can cause exceptions if JSF decides to serialize the session.
Working with the test app, the problem was duplicated, as described. Then, I modified the City class to make it Serializable, and then the problem went away.
Basically, any objects that applications hand over to a UIComponent to operate on, or store, should implement Serializable, since one way or another, any of those objects may be state saved into the session, and the session may be serialized, which will then fail if it's not 100% constituted of Serializable objects.
Attached test case that shows the issue. This test case uses the autocomplete tutorial.
welcomeICEfaces.iface - This is where to reproduce the issue. Steps:
tabView.iface - This replaces the ice:panelTabSet. This also functions the same as using a selectInputText by itself.