Usually, the person maintaining a particular program is not the same person that wrote it. It is therefore of great importance that the code be written in a way that it can be understood by someone else and modified with predictable results.
While modularity is the key to reusability, and indeed necessary in order for a program to be maintainable as well, it is not enough. The implementation of a module is susceptible to evolution as well. Therefore, maintainability is determined by the way a module was implemented in addition to its interface.