Olá Adriano, tudo bem com você?
Acredito que repetição de código não é o termo ideal, se precisamos de um construtor específico todas as classes que herdam dela provavelmente necessitam também dessa informação para que façam sentido com objeto, então não haveria muito esse problema de ter que ir para a classe mãe para entender o seu funcionamento seria algo um tanto quanto natural, parece ser mais uma questão de regra de negócio
do que repetição de código :)
Agora caso essa informação não fosse tão importante para a existência da classe poderíamos ter uma outra estratégia, que seria a sobrecarga de construtores, ou seja:
public Conta(int agencia, int numero){
Conta.total++;
this.agencia = agencia;
this.numero = numero;
}
public Conta() {};
Dessa maneira as classes filhas poderiam ter construtores vazios, ou específicos para cada uma delas, mas tipicamente irá prevalecer o que citei anteriormente, construtores específicos normalmente vem com uma informação vital para a existência do objeto, e por conta disso temos um alto acoplamento entre as classes :)
Abraços e Bons Estudos!