Olá, Carlos! Como vai?
O conceito de legibilidade pode variar de pessoa para pessoa, e o que pode parecer mais legível para um, pode não ser para outro. Isso depende muito do nível de familiaridade com a linguagem e os conceitos utilizados.
As funções lambda, assim como outros recursos avançados de várias linguagens, surgem como uma alternativa para tornar o código mais conciso e, para alguns, mais legível. No entanto, como você mencionou, elas podem tornar o código mais complexo para aqueles que não estão familiarizados com o conceito.
No exemplo que você mencionou, a versão com a função lambda pode parecer mais complexa à primeira vista, mas ela tem a vantagem de ser mais declarativa. Ou seja, ela descreve o que queremos fazer (filtrar os números pares da lista e imprimi-los) sem se preocupar com os detalhes de como isso é feito (como inicializar um loop, verificar a condição, etc).
No entanto, você está absolutamente correto em dizer que a simplicidade é uma virtude no desenvolvimento de software. O princípio KISS (Keep It Simple, Stupid) é um bom guia a seguir. Se um código mais simples e direto é mais adequado para o seu caso, não há nada de errado em usá-lo.
Em relação ao debugging e ao tratamento de exceções, é verdade que as funções lambda podem complicar um pouco essas tarefas. No entanto, muitas IDEs modernas têm ferramentas que ajudam a lidar com isso.
Em resumo, as funções lambda são apenas mais uma ferramenta à disposição dos desenvolvedores Java. Elas podem ser muito úteis em algumas situações, mas não são a resposta para tudo. Como sempre, o melhor é usar o bom senso e escolher a ferramenta mais adequada para cada situação.
Espero ter ajudado!
Caso tenha dúvidas, fico à disposição.
Abraços e bons estudos!