The first time this button is run it works as expected. The problem is that on subsequent runs, the FIND command is using the value of $glob:MyVar from before the button is clicked (acting as if the @SET command had not been run), however the /ARGSMSGBOX command displays what I expect (whatever I just entered into the dialog for @SET).
@set $glob:MyVar="{dlgstringS|Enter search term}"
dopusrt /argsmsgbox {$glob:MyVar}
Find {$glob:MyVar} IN {sourcepath$}
As a workaround, I put the FIND command into a new user-defined command, and call that command instead of FIND.