Fieldset tags are kicked out of the table because they're not inside a td.
This div shows what happens if you use <fieldset> between pseudo-table classes for table and row (in this case, <div class="t"> and <div class="r">).
Fieldsets also result in indentation relative to non-fieldsetted rows. You can compensate for that in CSS. For example, you can have a <div class="nofieldset"> that you set to have the same padding-left as fieldset's padding-left plus border-left, which you also control in CSS to eliminate cross-browser incompatibilities. Then just alternate your grouped rows between <fieldset> and <div class="nofieldset">. Simple!!