I have created a system similar to that described in item 2 of Glenn's posting. I created a custom ExportAttribute class with which I can specify the scoping for a particular Export (i.e. that contract "IChild" should be scoped to contract "IParent").
That way I can easily identify which parts need to be available from the child container, and which will be available from the parent container. I also created a custom ExportProvider (derived from CatalogExportProvider) that automatically takes care of figuring
out all the exports that are "scope owners", and when one of these exports is requested does the following:
1) Creates a child container
2) Populates it with all the parts that advertised scoping to the scope owner (done using a FilteredExportProvider I run against the parent container's catalog)
3) Pulls the new part from the child container and hands it back to the caller
4) Maintains a dictionary so that when the scope owner is disposed, it disposes its container.
This system seems to work reasonably well, but be prepared that there seems to be a bit of a performance hit for the container creation (~0.3 seconds on my 4 year-old laptop) so it may not work well where there are a lot of scoped containers being created,
or the nesting is very deep.