Vamos categorizar os dados em três categorias: dados legíveis por seres humanos (geralmente textos, variando de livros a programas), dados destinados a serem lidos por computadores e outros dados (analisando imagens ou sons).
Para a primeira categoria, precisamos processá-los em algo que um computador possa usar. Como os idiomas usados pelos seres humanos geralmente podem ser capturados relativamente bem pelos analisadores, geralmente usamos analisadores para isso.
Um exemplo de dados na terceira categoria seria uma imagem digitalizada de uma página de um livro que você deseja analisar em texto. Para esta categoria, você quase sempre precisa de um conhecimento muito específico sobre sua entrada e, portanto, precisa de um programa específico para analisá-la. A tecnologia de análise padrão não o levará muito longe aqui.
Sua pergunta é sobre a segunda categoria: se temos dados binários, quase sempre é um produto de um programa de computador, destinado a outro programa de computador. Isso imediatamente significa também que o formato em que os dados estão é escolhido pelo programa responsável por sua criação.
Programas de computador quase sempre produzem dados em um formato que possui uma estrutura clara. Se analisarmos alguma entrada, estamos essencialmente tentando descobrir a estrutura da entrada. Com dados binários, essa estrutura geralmente é muito simples e fácil de analisar pelos computadores.
Em outras palavras, normalmente é um desperdício descobrir a estrutura de uma entrada para a qual você já conhece a estrutura. Como a análise não é gratuita (leva tempo e adiciona complexidade ao seu programa), é por isso que o uso de lexers / analisadores em dados binários é "tão errado".