Aside from code bloat the major reason that include files are a bad idea is that they are poorly encapsulated. Code in an include can reference objects (buffers, variables, fields, frames, etc, etc...) anywhere in the including procedure. And the including procedure can do the same. This means that unexpected side-effects are a common problem and leads to serious maintenance troubles.
More modern structures, such as parameterized external procedures, internal procedures, user defined functions, super procedures and classes provide much stronger support for proper encapsulation and separation of concerns.