Why do we not store names in a separate table? Practically, I would never store names for customers in a separate table.  But why not?  It's a one to many relationship (a person can have one name but that name can be used by multiple people).  Isn't it proper design to separate one to many relationships over multiple tables, or am I missing something?
No, it is absolutely not proper normalization to move a name out to another table.

Normalization reduces redundancy based on functional dependencies, not based on coincidental repetition of data values.  

Let's say there are 100 Joe Smiths in your database.  If you move the name "Joe Smith" out to another table and have 100 records point at this name, what happens when one of the Joe Smiths decides to change his name to "Bob Smith"?  Unless they all change their names in unison, you can't work with the data that way.