A vantagem é escrever menos código e não ter que criar uma propriedade private e depois ter que criar 2 métodos (um get e um set) para manipular essa propriedade.
Ao invés de criar por exemplo um
private int Idade;
public int SetIdade( int idade )
{
this.Idade = idade;
}
public int GetIdade()
{
return this.Idade;
}
Você pode criar diretamente na auto implementada com uma propriedade publica e passando o que quer ser private ou não.
O mesmo exemplo de cima
public int Idade { get; set } // faz exatamente a mesma coisa com uma linha de código