When you add an object instance via a CompositionBatch the Export/Part is always automatically Shared. The reason for this is because if it were NonShared the container would need to know how to construct a new instance and it doesn't have the context to
have that knowledge.
If you really want a NonShared of a type, which you don't control the source code for, I can see only two possible approaches:
1) Instead of adding IMessageBoxService you could add an IMessageBoxServiceFactory which could create as many instances as needed, but the Import would then have to import IMessageBoxServiceFactory instead and call the create method for it.
2) You could create a custom catalog that could wrap the type in a ComposablePartDefinition which defined all the behavior you wanted for that particular type. While this would give you the most flexibility and would still allow the importer to import IMessageBoxService
it requires more work upfront in constructing a custom catalog.
So depending on your particular scenario you can make a choice. Another potential solution if this really is only for StandardMessageBoxService is to create a subclass of StandardMessageBoxService that you can control the source and place the attributes