En pocas palabras: mala separación de las preocupaciones dentro del código, conduce a un código que no es modular, conduce a una mala reutilización, conduce a un código duplicado.
Si nunca intenta repetir la funcionalidad, no obtendrá código duplicado, y muchas variables de instancia no serán un problema.
Si intenta repetir la funcionalidad, entonces el código monolítico, que no es modular, no puede reutilizarse. Hace demasiado y solo puede hacer lo que hace. Para hacer algo similar, pero no igual, es "más fácil" cortar y pegar, en lugar de romper el código monolítico. Los programadores de experiencias saben que el código duplicado es el camino al infierno.
Entonces, aunque muchas variables de instancia en sí mismas no son la causa raíz del problema, es un fuerte "olor" que el problema está llegando.
El lenguaje "no puede estar muy lejos" es más débil que decir "seguramente debe seguir", por lo que el autor no afirma que deba suceder sino que eventualmente sucederá; si necesita reutilizar la funcionalidad pero no puede porque el código no es modular.
nvariables booleanas, por ejemplo, crean un espacio de estado interno de2^n. La mayoría de las veces, aunque su objeto no tiene tantos estados observables , pero debido a que ha agrupado todo ese estado en un solo objeto, internamente aún tiene que manejarlos a todos.