Olá, tudo bem?
O primeiro exemplo private readonly int numero;
deve ser usado quando precisamos definir uma variável, dentro de um controlador ou serviço, com um valor predefinido e que nao poderá ser alterado em tempo de execução. Exemplo: uma string que armazena informações de conexão com um banco de dados. Se o valor da variável fosse alterado, todo o serviço falharia, pois haveria um erro na conexão com o banco.
O segundo exemplo public int Numero { get; }
deve ser usado quando temos uma propriedade, dentro de uma classe, que não poderá ser alterada em tempo de execução. Essas propriedades identificam o objeto instanciado. Um exemplo seria um Id de objeto ou o CPF de uma pessoa. Se estes valores fossem alterados em tempo de execucao, nao representariam mais aquele objeto, entende? O novo valor de CPF poderia apontar pra outra pessoa ou um objeto inválido.