If a tiddler is in column a and in column b, and that tiddler should only appear once,
does it mean that tiddler does not appear at all , and if not then which column should show that tiddler ?
That aside, <$list> are like loops in programming. For each item in the first loop, that one item will get processed for every item that is the second loop.
Every tagb item is going to get processed once for every taga item. So you are going to get repeats of every tagb.
Start with this and then we can work on what to do with items that are tagged both taga and tagb.
<table>
<tr><th >Tag_a</th><th >Tag_b</th></tr>
<tr>
<td>
<$list filter="[!is[system]tag[a]sort[title]]" variable="taga">
<$link to=<<taga></$link>
</$list>
</td>
<$list filter="[!is[system]tag[b]sort[title]]" variable="tagb">
<$link to=<<taga></$link>
</$list>
</td>
</tr>
</table>