I have the exact opposite experience. I think giving unsolicited feedback to candidates is unwise:
* Sometimes the candidate just isn't good at what they
do. Telling people that, even in the most constructive way
possible, can generate lots of negative emotions. You don't
know who you're talking to, and if they'll take it well.
* Sometimes the candidate is pretty good, but doesn't quite
clear your bar. It's rediculously hard to communicate that
without hurting people's egos.
* Sometimes it's a matter of taste -- the person is good, but
you know the delta between what you want to accomplish and
what they want to accomplish is too great. Some people won't
understand that and will interpret it as you not hiring them
because you're an egocentric asshole.
* Sometimes they're really smart, but you know they'll spend
time futzing around with different technologies for
technology's sake and will not be productive. Most people
like that won't hear what you're telling them.
* Sometimes something just rubs you the wrong way. What if the
candidate seems to be jumping to conclusions too quickly and
doesn't seem thoughtful enough? What if it feels very nuanced
and any given example seems petty, but you just feel off in
aggregate? It's extremely hard to communicate that to people,
and will likely open up lots of emotions you don't want to be
dealing with.
I agree that it's a good idea to give honest feedback if people follow up and ask for it, and agree with not using form letters. A simple personal note can go a long way:
Hi Bob, it's Jim at CompanyX. I discussed the interview with the
team, and decided this isn't a good fit. Thanks for taking the
time to interview with us, and good luck!