automatically setting the Id property for subdocuments is missing. Try

public class PhoneBookContact
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string Location { get; set; }
    public List<string> PhoneBookIds { get; set; }
    public List<PhoneBookContactNumber> Numbers { get; set; }
    public string ManagerId { get; set; }
    public List<string> CategoryIds { get; set; }
}

public class PhoneBookContactNumber
{
    public string Id { get; set; }
    public string Number { get; set; }
    public NumberType Type { get; set; }
}

public enum NumberType
{
    Office, Mobile, Home
}

public static void RegisterConventions()
{
    var pack = new ConventionPack
    {
        new IgnoreExtraElementsConvention(true),
        new StringObjectIdGeneratorConvention()
    };

    ConventionRegistry.Register("My Solution Conventions", pack, t => true);
}

internal class StringObjectIdGeneratorConvention : ConventionBase, IPostProcessingConvention
{
    public void PostProcess(BsonClassMap cm)
    {
        var idMemberMap = cm.IdMemberMap;
        if (idMemberMap == null || idMemberMap.IdGenerator != null)
            return;
        
        if (idMemberMap.MemberType == typeof(string))
        {
            idMemberMap.SetIdGenerator(StringObjectIdGenerator.Instance)
                       .SetSerializer(new StringSerializer(BsonType.ObjectId));
        }
    }
}

public static void ConfigureClassMaps()
{
    BsonClassMap.RegisterClassMap<PhoneBookContactNumber>(cm =>
    {
        cm.AutoMap();
        cm.MapIdMember(c => c.Id)
          .SetIdGenerator(StringObjectIdGenerator.Instance)
          .SetSerializer(new StringSerializer(BsonType.ObjectId));
        cm.MapMember(c => c.Number).SetSerializer(new StringSerializer(BsonType.String));
    });

    BsonClassMap.RegisterClassMap<PhoneBookContact>(cm =>
    {
        cm.AutoMap();
        cm.UnmapMember(m => m.Categories);
        cm.UnmapMember(m => m.PhoneBooks);
        cm.MapProperty(m => m.NumberOfTelephoneNumbers);
        cm.MapProperty(x => x.ManagerId).SetSerializer(new StringSerializer(BsonType.ObjectId));
        
        cm.MapProperty(x => x.PhoneBookIds)
            .SetSerializer(new EnumerableInterfaceImplementerSerializer<List<string>, string>(
                new StringSerializer(BsonType.ObjectId)));
        cm.MapProperty(x => x.CategoryIds)
            .SetSerializer(new EnumerableInterfaceImplementerSerializer<List<string>, string>(
                new StringSerializer(BsonType.ObjectId)));
        
        cm.MapMember(x => x.Numbers).SetSerializer(
            new EnumerableInterfaceImplementerSerializer<List<PhoneBookContactNumber>, PhoneBookContactNumber>(
                BsonSerializer.LookupSerializer<PhoneBookContactNumber>()));
    });
}