Interface define API pública. Se a API pública contiver apenas getter, você definirá apenas getter na interface:
public interface IBar
{
int Foo { get; }
}
O setter privado não faz parte da API pública (como qualquer outro membro privado), portanto, você não pode defini-lo na interface. Mas você é livre para adicionar membros (privados) à interface de implementação. Na verdade, não importa se o setter será implementado como público ou privado ou se haverá setter:
public int Foo { get; set; } // public
public int Foo { get; private set; } // private
public int Foo
{
get { return _foo; } // no setter
}
public void Poop(); // this member also not part of interface
O setter não faz parte da interface, portanto, não pode ser chamado através da sua interface:
IBar bar = new Bar();
bar.Foo = 42; // will not work thus setter is not defined in interface
bar.Poop(); // will not work thus Poop is not defined in interface