The reason that I find most compelling is that openness towards ones users will encourage feedback. This is very important because most users will silently either accept the program or switch to something else. Anything that encourages them to contact the developer is therefore a Good Thing. Feedback is invaluable, even if it doesn't include contributions of code, because it provides the developer with encouragement to keep going, ideas for new features, and even ideas for new projects. One must be careful, however, because suggestions and submissions of code each provide ways to derail a project.
Suggestions require very little effort from the user.
This requires that the developers have strong enough design abilities to read between the lines and understand what the user really wants because experience shows that most users, when given what they asked for, very quickly decide that they really wanted something at least slightly different. Endless redesigning of existing features will cause any project to grind to a halt. Submissions have the advantage that they have usually been tested, so they will do what the submitter really wanted, as opposed to merely what the submitter initially envisioned. In addition, the effort required to write and test the code acts as a filter to dramatically improve the average quality of submissions. If it is something that would be only marginally useful or merely cute, nobody is likely to do it.