There are a few good reasons, one is that if you switch to another hosting company, you need to change the DNS for all the domains hosted there, and if you use a crappy registrar like 1&1 with no bulk management it would be more time-consuming...
Instead you can use your own DNS for your domains to point them to some host, then if you decide to switch to another webhost you just have to change the A records etc in your own name servers. You don't have to update the depending domains.
The other reason is when you need more flexibility than offered by your registrar. For instance certain features or types of records may not be available on all platforms.
Also you may want more redundant/robust DNS.