Great discussion.  I'm chiming in late, but my $0.02.

"No thank you.  Maybe later." means you have some reason not to dance this particular dance with this person, but would be open to future offers.
"No thank you." with a friendly smile is similar but less explicit.

The above should cover 99% of the cases!

"No thank you." without a smile and turning away immediately, is a vague way of saying, "Please don't ask again."  Some people will get the message.  Many won't because the "thank you" diffuses the message.
"No" without a smile and with an immediate turn may be more effective, but is still vague.
"No. Please don't ask again." is a kind and polite response when you have a reason never to dance with a person.  It tells the person where they stand, and avoids expectations that might lead to future invitations.

Even kinder is, "No, I don't feel (safe|comfortable|whatever) dancing with you."  It lets the person know unambiguously that there is a problem and indicates that you might be willing to elaborate.
This leaves open the possibility that the person might ask questions and learn. 
Unfortunately, it also leaves open the possibility that the person will ask questions as another way to force unwanted attention on you.

In my intro lessons I say something like: 

"Feel free to ask anyone to dance.  
You will find that most experienced dancers will be pleased to dance with you.
However, if someone turns down your request, don't be offended.  There are many reasons why they may not be available right now.
If someone you don't know invites you to dance, be open to the idea that you may be about to make a new friend.
However, you should also feel free to decline to dance with or without explaining if you need a rest, or have a partner for the next dance, or if you aren't comfortable dancing with the person who asked."

Although I have occasionally heard of the "rule" that started this thread, I don't feel that people should ever be penalized for declining an offer to dance.

Dale

--
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors.