I have been able to reproduce your situation and found the cause for it. When you use the first approach, you are instantiating your view inside the event handler. Thus, you are not creating a
view unless the event is fired.
However, in the second approach you create the view whether the event is handled or not. By doing that you are preventing the subscriber in the module initializer from being Garbage Collected,
which is the reason the event handler is executed.
The Composite Application Library was designed with this scenario in mind. What you can do to use the first approach is keep a reference of the subscriber. You can read more about this
here. This could be memory leak prone, so you should unsubscribe when you don’t need the handler to be executed
any more. The Event Aggregation Quickstart shows how to unsubscribe and subscribe to events.
The following blog post also talks about a similar situation:
Prism Event Aggregator Subscription Blues
Please let me know if this helps.