Olá Lucas. Tudo bem?
A questão que você levantou é uma particularidade da linguagem Kotlin relacionada à visibilidade das propriedades dentro de classes e inner classes. Quando você declara um parâmetro no construtor de uma classe em Kotlin usando val ou var, você está na verdade criando uma propriedade da classe que é acessível em todo o seu escopo. Por isso, ao utilizar (val binding: ItemRvBinding) no construtor da sua inner class ViewHolder, você está tornando binding uma propriedade da instância de ViewHolder, acessível em todos os métodos e partes da classe.
Por outro lado, quando você declara apenas (binding: ItemRvBinding), você está criando um parâmetro de construtor que não é promovido a uma propriedade da classe. Ele é acessível apenas dentro do construtor e não é armazenado como um campo da instância da classe. Isso significa que você não poderá acessar binding fora do construtor da sua ViewHolder.
Portanto, para ter acesso à binding em outros métodos da sua inner class ViewHolder, você precisa declará-la como uma propriedade da classe usando val (ou var, se precisar modificar o valor depois), como você fez corretamente.
Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.