I think there's a misunderstanding of what the group tag actually does. What you're seeing is correct behavior, even though it many not be exactly what you would expect at first glance.
The group tag doesn't operate on a seperate rowset for each instance of the group tag. Only one rowset is operated on for the entire multirow. Since you only have 2 rows coming out of the database, you can only have one group tag looping, and it will repeat only once. Once that group tag has looped, here are no more rows for the other group tags to compare against, so the multirow ends since it has output the last row.
I'm wondering why a simple multiple tag wouldn't work in this case. If you want to print out in order the columns of the data in order, why not do:
<multiple name="test">
@test.a@
@test.b@
@test.c@
</multiple>
In the example you mentioned, this would result in:
feedback
shirt
blue
rating
shirt
blue