The ftpd that comes with Solaris does not have a -T (timeout) option. You could download and compile one of the many ftpd that would allow you to use the option.
One of these is the ftpd created at Washington University - use this
link to read about it and download.
As far as your second question, I can not find a difference if looking at it the way you asked.
Since a child process is started to run the script (./yourscript) and a child process is started when the sh command is executed, they both get the same variables.
The only thing that could be different is that with the sh ./yourscript, you can add different options to change how the child process runs. See the man page on sh.