Using Richfaces 3.3.0 I noticed the following:
When creating a rich:listShuttle I set the sourceValue to a list full of items and the targetValue to an empty list, i.e. when the component is loaded, the list on the left side is full of items and the list on the right side is empty.
If I then select an item in the left list and click the copy button, that item gets moved over to the right list, however the css class of the row on the right side becomes "rich-shuttle-source-row" and the cell "rich-shuttle-source-cell".
If, when creating the rich:listShuttle, I let the targetValue contain items from the start, those items will have the css classes rich-shuttle-target-row" for the rows "rich-shuttle-target-cell" for the cells. Copying also works as expected and these are the css classes the copied items get also.
In other words, if the target list is empty from the start, the css classes on the target side gets set to the classes meant for the source side and I'm guessing this must be a bug in the listShuttle component.