Por que um método Add é necessário para a inicialização {}?

Para usar a sintaxe de inicialização como esta:

var contacts = new ContactList
{
    { "Dan", "dan.tao@email.com" },
    { "Eric", "ceo@google.com" }
};

... meu entendimento é que meuContactList tipoprecisaria definir umAdd método isso leva doisstring parâmetros:

public void Add(string name, string email);

O que é um pouco confuso para mim é que o{ } sintaxe inicializador parece mais útilao criar coleções somente leitura ou tamanho fixo. Afinal, ele pretende imitar a sintaxe de inicialização de ummatriz, direito? (OK, portanto, as matrizes não são somente leitura; mas elasestão tamanho fixo.) E, naturalmente, só pode ser usado quando o conteúdo da coleção é conhecido (pelo menos o número de elementos) em tempo de compilação.

Portanto, parece quase que o principal requisito para usar esta sintaxe do inicializador de coleção (ter umAdd método e, portanto, uma coleção mutável) está em desacordo com o caso típico em que seria mais útil.

Tenho certeza de que não pensei muito nesse assunto como a equipe de design do C #; parece que poderia haver regras diferentes para essa sintaxe que se encaixariam melhor em seus cenários de uso típicos.

Estou fora da base aqui? O desejo de usar o{ } sintaxe para inicializar coleções de tamanho fixo não é tão comum quanto eu acho? Que outros fatores podem ter influenciado a formulação dos requisitos para esta sintaxe em que simplesmente não estou pensando?