Oi Janile, fica mais fácil entender da seguinte forma: Um atributo privado pode ter seu valor alterado somente pela classe cujo a qual ele pertence. Como ContaPoupanca é filha de Conta, quando vc chama o método Deposita, você está chamando na verdade o método da classe Conta (que é mãe/base dela) e não da classe ContaPoupanca.
Agora, se vc quisesse que o comportamento do método Deposita fosse diferente para ContaPoupanca, você teria que sobrescrever ele na classe ContaPoupanca, e aí sim tornar saldo protected ( e o método Deposita virtual, para poder sobreescrever), pois você precisaria acessar de uma classe filha:
class Conta
{
public double Saldo { get; protected set; }
public virtual void Deposita(double valor)
{
this.Saldo += valor;
}
}
class ContaPoupanca : Conta
{
public override void Deposita(double valor)
{
if (valor >= 100) //Se por exemplo esta conta só aceitasse depositos maior ou igual a 100
{
this.Saldo += valor;
}
}
}