FYI under the hood shell uses BSD's popen while unixTask uses Cocoa's NSTask.
One important consequence of this is that the command string you pass is flat text in the first case, but an opaque (internally Unicode-based) Cocoa object in the second.
Another is that while it's technically possible to feed data to popen's stdin, it requires a non-obvious trick the folks at Apple DTS who helped me set that up apparently hadn't learned yet (back in 2001) and has a hard (but variable) input length limit that you can't really determine accurately in advance (so in effect it's possible, but not practical). With NSTask though, while it also requires some undocumented space voodoo you can basically pipe unlimited amounts of data to a shell script via stdin (instead of having to somehow embed it directly into the command).
In practice that meant it wasn't feasible to perform any sort of automatic encoding conversion on the input to shell (because it might contain anything) but in unixTask (where any stdin arrives via a separate dedicated parameter) I could assume that what was in the argument parameter(s) was pure text and safely transcode it from MacRoman to UTF.
Note that both forms still do automatic CR<->LF swapping on the input and output unless you add the raw option (which comes last in shell, but first in unixTask). And with raw there's usually a trailing linefeed in the output (which you'll likely want to remove manually).
Another important difference is that in unixTask you can communicate back and forth with SC from the script using scdo and scget (which are special dedicated command-line tools included within the SC bundle that interact with the interpreter via AppleEvents) so your shell scripts no longer need to be black boxes.
And of course (assuming you're not somehow relying on shell built-in commands or macros) you can typically execute a low-overhead BSD command-line tool (e.g., date) much faster if you call it directly using unixTask (i.e., NSTask) than via shell (i.e., popen) because SC doesn't have to instantiate a whole unix shell just to call it.
HTH,
-Mark