I think Unreal's standard WinMain simply checks if the service is installed and if so sends itself an SCM Start, and if not, start the GUI. Not 100% sure on this.
Of course, starting via SCM goes straight to ServiceMain() (as codemastr mentioned ;p ).