Percebi que foi duvida de outro aluno tambem, andei pesquisando e percebi que o angular não dispara novamente a animação em caso de uma segunda pesquisa porque ele não reconhece nenhuma mudança na lista de livros, e a solução é mais simples do que parece.
basta relacionar a animação com o resultado retornado do observable que seria a listaLivros.length , dessa maneira ele sempre irá detectar a mudança no DOM e a animação será ativada sempre que realizar uma nova pesquisa, Isso força a detecção de mudanças no trigger, e é um truque limpo e eficaz para garantir a reexecução das animações.
espero que essa informação ajude outros estudantes.
class="container-card"
*ngIf="livrosEncontrados$ | async as listaLivros; else telaInicial"
[@booksAnimation]="listaLivros.length"