I got to thinking more about this. My original script didn't work, but this does work:
Output with -x:
STR="/bin/gunzip < /home/mike/backups/$1 | /usr/bin/mysql -uUser -pxxxx
+ STR='/bin/gunzip < /home/mike/backups/mike_forum_110322-0100.sql.gz | /usr/bin/mysql uUser -pxxxx test'
+ eval /bin/gunzip '<' /home/mike/backups/mike_forum_110322-0100.sql.gz '|' /usr/bin/mysql uUser -pxxxx test
++ /usr/bin/mysql uUser -pxxxx test
The 'eval' suggestion from Nominal Animal was right on, but when I tried it out it got tangled with a 'zcat' (which didn't work).
Thanks and apologies, Normal Animal.