Unix's standard tee command allows you to redirect the command's standard input to one or more files and also print it to the standard output. So you can do something like
myscript.sh|tee mylog.log
provided that myscript.sh just prints to standard output (which would actually simplify it)
To open a terminal windows when you click on icon, you can wrap it in another script:
xterm -e "myscript.sh | tee mylog.log; read -p FINISHED"
The difference with your solution is that you have a choice to either close the terminal window when the script finished or display "Press any key to continue..." message - with tail -f the terminal basically has no way of knowing when your script finished so you have to interrupt it with Ctrl-C.
Also, tail -f must be less efficient that printing directly to terminal, but this is probably not very important these days.