Actually that's true. A trigger can be better when you're waiting for a specific event, rather than just waiting an arbitrary amount of time...
However, Sleep() is often used in multi-threaded applications to allow the other threads to have processor time. These are usually "background tasks", where the user has no awareness of any short delay.
It should be used sparingly (at least for very short periods of time) in a single threaded "User Interface" application, since it *does* make the app look like it's dead.