The name is user space data. Names belong to humans and names are entered by humans. Humans make typos and marry or change their mind about their name. The id, OTOH, is usually solution space data which is automatically generated on insert. Automatically generated ids are guaranteed to be unique. Names are not. Thus using a name as an id is a bad idea because two different humans can have the same name but they should have different ids.
ofcourse, I realise that, I dont use anything else myself. But I guess what I mean is, how far is one willing to go with normalisation? The method I mentioned is by far cleaner from a DB admin's point of view, as it takes less rows. From a developers point of view, it complicates queries, especially the JOIN type queries, by an enormous amount.
tbh, for my site I use both. I guess it depends on the application being developed for it.