Profiler is a client application where the SQLTrace or Server Side Traces are invoked through calling stored procedures on the server.
In general terms, I would use Profiler when trouble shooting a performance problem as it's occurring. I would use Server side traces for monitoring a production server....
The biggest reason that I thought for using a server side trace over Profiler was the band width usage in sending the results back to the client, but the following blog on SQLServerPedia, also points out that Profiler or client side traces can impact transaction throughput by as much as 10%
http://sqlserverpedia.com/wiki/The_Server-side_Trace%3A_What,_Why,_and_How
Also MSSQLTIPS has a good description for setting up server side traces: http://www.mssqltips.com/tip.asp?tip=1035