I would agree with your first statement "good for learning" if learning would be about maximing each result of a learning experience. But actually learning is more efficient if you do mistakes that you can evaluate and make decisions based on them. And if you don't say a number you don't make a mistake. Therefore I would say that not saying anything may increase your knowledge of your value but it doesn't increase your skill. Saying the wrong number, walking out happily and later learning from a coworker that you earn only 25% of him, then you learn something and look for another job.
That makes no sense to me. What does being underpaid teach you?
Nothing. But finding out how you ended up being underpaid does. The mistake was not getting a paycheck but the bargaining for the amount. The difference between what you should get and what you get is money you pay for your education.
The best thing I did for my negotiation skill was to read up popular psychology books on influence. It may not make me a negotiations pro but just being able to name some of the dynamics and recognize some of the tactics puts me (or so I feel) at a far better position at the discussions.
E.g. it's easier to play football if someone explains the rules, especially if the opposing team is used to playing against players whoa are completely clueless of the game.
In this context "don't name a number" is analogous to "be aware of the leverage at play, and don't yield leverage to the other side unless you know where the game is".