Although this technically works, in some cases it may lead to strange bits of misbehavior. (Depending on where you do it, the app may end up in the wrong audit session or mach namespace, and it may also be missing some environment variables that it was expecting).
The open command does allow you to specify command-line arguments to pass to the application (via --args), which is generally a safer way to do things.