Make a config option to point to a specific 'file not found' module. Have a default module that will run and show the 404 page whenever a requested m/s/e is not found. This will allow people to write custom 404 logic in CGN. (give examples in the comments/code about how to use it!)
Alternatively, each m/s/e tree could have some sort of default 404 behaviour methods which would get called.
Example:
welcome.main.foo
if welcome.main exists, but no foo, call the default 'method404Event' in the main service.
If welcome module exists with no main, load a default 404.php service file in that directory to handle a 404 at that level.
If no welcome module exists at all, fall in to a '404' module.
That alternative might be too confusing though. Just writing it up seemed confusing. But maybe you'll come up with a new way of thinking about it based on that.