I don't think you can do that with attributes, but you should be able to configure it in code like this:
var classMap = BsonClassMap.RegisterClassMap<C>(cm =>
{
cm.AutoMap();
var reviewSectionSerializer = new ImpliedImplementationInterfaceSerializer<IReviewSection, ReviewSection>();
var listSerializer = new EnumerableInterfaceImplementerSerializer<List<IReviewSection>, IReviewSection>(reviewSectionSerializer);
var listInterfaceSerializer = new ImpliedImplementationInterfaceSerializer<IList<IReviewSection>, List<IReviewSection>>(listSerializer);
cm.GetMemberMap(x => x.Sections).SetSerializer(listInterfaceSerializer);
});
The steps are:
1. Use AutoMap to set up the class (we'll then override the serializer for Sections below)
2. Create a serializer for type IReviewSection with an implied implementation of ReviewSection (so it will be written and read without discriminators)
3. Create a serializer for type List<IReviewSection> to do the actual work of serializing the list
4. Create a serializer for type IList<IReviewSection> with an implied implementation of List<IReviewSection> (so it will be written and read without discriminators)
5. Configure this last serializer to be the serializer for the Sections property