Either will work fine; folks sometimes choose to use a lightweight container, such as Tomcat, because the ops folks are used to managing/monitoring them. But Spring Integration doesn't need a container (unless you are using http or web service inbound endpoints). Another possible benefit of using a container is you can provide a simple web interface to perform operations, such as starting/stopping adapters, etc (but this can also be achieved over JMX, which avoids the need to write a web interface).
Running a main() is fine, but you might want to use a shell script that can re-start the JVM after a failure, and be installed as an init.d script for auto startup on reboot.
It often just comes down to corporate policies and what the ops people are more comfortable with.
Gary P. Russell
Spring Integration Team
SpringSource, a division of VMware