I have something similar (but different) im my listreveal plugin. The lists are generated like this (I simplify the code a bit for better understanding of the important parts – this is NOT tested):
<ul class="lr-tags-add">
<$list filter=<<add-tags-filter>> variable="tag">
<li>
<$macrocall $name="teBtnTagAddRemove" btntext=<<tag>> add=<<tag>> tiddler=<<tiddler>> tooltip="add"/>
</li>
</$list>
</ul>
<ul class="lr-tags-remove">
<$list filter=<<remove-tags-filter>> variable="tag">
<li>
<$macrocall $name="teBtnTagAddRemove" btntext=<<tag>> remove=<<tag>> tiddler=<<tiddler>> tooltip="remove"/>
</li>
</$list>
</ul>
To make this work you would have to surround it with suitable definitions for all variables, e.g.
<$wikify name="tiddler" text=<<currentTiddler>>>
<$set name="add-tags-filter" value="[tags[]sort[]] -[<tiddler>tags[]]>
<$set name="remove-tags-filter" value="[<tiddler>tags[]]">
...
</$wikify>
Does this make sense?
Good night and good luck!
Thomas