...the help button shows when in the tabbed list but works perfectly in the original tiddler.
The problem arises because popup's "state" tiddler ($:/temp/popup/$(currentTiddler)$/$label$) depends on the value of $(currentTiddler)$.
In the "original" tiddler, this value is the title of that tiddler. However, when shown in a tab, the value is the title of the tiddler containing the entire tab set, rather than the title of the tab content tiddler itself.
The currentTiddler variable is not affected by the tabs macro. This can put you in trouble if the list of tabs includes tiddlers that depend on the value of the currentTiddler,
One way to account for this is to wrap your macro within a $tiddler widget, like this:
<$tiddler tiddler=<<currentTab>><<HelpButton ...>></$tiddler>
What this does:
* when the content is shown in the "original" tiddler, the value of <<currentTab>> is undefined, so the $tiddler widget has no effect
* when the content is shown in a tab, the value of <<currentTiddler>> is set to the same as the <<currentTab>>
Note that, to make this usage a bit cleaner, you could re-write your code as follows:
\define HelpButton(label, ButtonText:?) <$tiddler tiddler=<<currentTab>><<HelpButton_inner $label$ $ButtonText$>></$tiddler>
\define HelpButton_inner(label, ButtonText:?)