I think is a very good idea.
I have been roaming around, and it is clear that there is a lot of people that doesn't give a reason for downvoting.
For instance, in this question:
https://stackoverflow.com/questions/15507626/how-do-i-pass-the-values-parameters-to-the-function
Why would you say it was downvoted? Maybe it was an inappropriate question? I, for instance, being a fairly new user, would like to understand why it was downvoted.
Also, the other day I opened a question, and it was downvoted without reason. I asked and there was no real reason to downvote (apparently). (Question: Question DownVoted, what are the consequences?)
Maybe if the person was forced to think a second for a reason to downvote, with a simple list of reasons without forcing them to comment, they would not downvote when it is not really warranted, and the user that wrote the question or answer being downvoted could at least have a hint of what they did wrong.
I think it would have major benefits:
New users would be educated more quickly in the proper way to use the site. (One of the education benefits is: that users with interest in it will be able to know better when to downvote and that way will be more effective when going through the forum to downvote other not useful posts)
It would reduce any possible abuse of the downvoting feature.
Sometimes people downvote because it "feels" wrong, having to give a reason would force them to think better.
Besides, since the question has to follow guidelines, it should be posible to give a set of possible reasons.
Regarding the statement about people complaining because of this. There is always going to be people that complain, whether they have a reason or not. But this would benefit all those other people that are new, and/or really want to learn.
If it annoys you to have to give a reason, maybe you don't really have a good reason to downvote. When you downvote it should be very clear why you are doing so. Downvoting it is not about censoring content out of feelings, it is about filtering information due to good reasons. Right now the downvote without a comment it is as useful as saying "I don't like it", which is not really a good reason.
But if a person already gave a reason, I think others can agree with that, so maybe just the first downvote should be "forced" to give the reason. And for the rest of downvotes, the same reason can be suggested.
In the other hand, people can be wrong, so if you just downvote, there is no way to know if there is really something wrong, or there is an actual issue. Because you just don't know what that person was thinking.
This is a community and everyone is supposed to work as a moderator, downvoting without a reason, it is not a responsible way to moderate.