implementar IEnumerable <T> e IEnumerable.GetEnumerator () não pode ser público, por que?

Para implementar um membro da interface, o membro correspondente da classe de implementação deve ser público. fonte:Interfaces (Guia de Programação em C #)

Sei que funciona se for privado, mas gostaria de entender por que não pode ser público?