The source comments indicates that an export will default to CreationPolicy.Any, which in means that the CompositionContainer will choose Shared by default, unless the part or the importer request a non shared one.

However, the behavior I get is different:

In the above case, NonSharedService is essentially shared on GetExports<IService>(...).GetExportedObject()

But when none of the exported services define the PartCreationPolicy attribute, both exports return Non-Shared instances. Is this right? or should I be wrong to expect that both exports are going to return shared instances?

What is the designed default behavior when an export doesn't define the PartCreationPolicy attribute?

In your case I would expect for both SharedService and NonSharedServices to return the same instance within in a given container each time they are asked for. If this isn't the behavior you are seeing can you please post some sample code that does repros
the different behavior. Also how are you determining that they both return NonShared instances?