A implementação feita foi a seguinte:
Criei uma class chamada de TACBrSacadoAvalista, essa class tem todas as propriedades da class TACBrSacado e foi adicionado outra necessária "InscricaoNr"
Na class TACBrSacado, criei um propriedade chamada de SacadoAvalista do tipo da class acima, para alimenta-la será assim:
Sacado.SacadoAvalista.NomeAvalista := 'Bla bla bla bla bla';
Sacado.SacadoAvalista.CNPJCPF := '123456456';
Assim por diante.
Agora, dentro de cada Unit de cada banco, precisa saber onde pegar essas informações para gerar o TXT, dessa forma cada um que precisar vai implementando no banco que usar, até que tenhamos todos os bancos implementados.
Obs: A propriedade Avalista do tipo String, não foi removida nem mudada por motivo de compatibilidade com as várias Units de bancos que a estão usando, se num futuro mudarmos essa propriedade para a da nova class, ai sim podemos remove-la, mas não tenho tempo definido e nem posso afirmar que será mesmo removida, ou ficará ai para sempre.
Baixe a Unit em anexo e faça os testes, e precisando alterar as units dos bancos, as anexe aqui para que eu possa analisar e subi-las.
ACBrBoleto.pas