Simply put: poor separation of concerns within code, leads to code that is not modular, leads to poor reuse, leads to duplicated code.
If you never try to repeat functionality, you won't get duplicated code, and many instance variables, will not be a problem.
If you do try to repeat functionality, then monolithic code, which isn't modular, cannot be reused. It does too much and can only do what it does. To do something similar, but not the same, it's "easier" to cut and paste, rather than to break up the monolithic code. Experiences programmers know that duplicated code is the road to hell.
So whilst many instance variable itself isn't the root cause of the problem it is a strong "smell" that the problem is coming.
The language "cannot be far behind" is weaker than saying "must surely follow" so the author is not claiming it must happen but will eventually happen; if you need to reuse functionality but cannot as the code isn't modular.
n
boolean variables for example create an internal state space of2^n
. More often than not though your object does not have that many observable states, but because you crammed all that state into a single object, internally you still have to handle them all.