Should I use my domain name registrar's free DNS hosting service, or host DNS servers with another company? (or both?)
What are some advantages to using a DNS hosting company separate from the domain registrar?
Depending on the feature set of the Registrar you're using, it may be advantageous to host your DNS elsewhere.
If for example you require Dynamic DNS services (DNS records that are updated automatically when a destination's IP changes), or wildcard DNS (allowing
<anything>.yourdomain.com to point to a certain IP), many Registrars do not offer these services.
If you do not require any special capabilities, in my experience, the difference (outside of the SLA of your Registrar vs that of a dedicated DNS host) is mostly moot.
You should host your DNS elsewhere. It will save your behind when you switch registrars, it will allow you to control TTLs like crazy so you actually have close to 0 perceived downtime for users when you change hosting, etc.
I personally recommend DNS Made Easy. Have been with them for about 3 years now and they rule (at their price point).
If your site gets big enough where it's a problem (or your registrar sucks enough where it's a problem) then you should host DNS servers with another company. One that is known for such things.
Otherwise, stay with the hosting provider.
Hosting providers (especially the inexpensive ones) don't put the same effort into DNS as the companies that Do It For a Living. It's sort of like running water, no one thinks about it until it stops working.
One advantage of using the name servers from the registrar is that they are very highly distributed, and that can effect the speed of lookups and global propagation.
For instance, Godaddy and Enom host so many domain names that the time to live of for newly purchased domains and for DNS modifications is SUPER fast.
As others have said, I'm broadly in favour of self-managing DNS on external services. I use the rather excellent Afraid.org's service and have done so for a few years - now pay for a premium package so I can set invisibility flags on some domains, and just because I like the service. I even think I'm going to upgrade to the next tier.
It's mildly cumbersome setting up a new domain (as opposed to my registrar's system autocreating records... which I would still have to modify); for one of my personal accounts on Dreamhost they've made it much easier by providing all the DNS records on one page for me to copy and paste after the domain's live on their system.
Any disadvantages are vastly outweighed in speed, redundancy and separation from the actual registrar. One registrar I used in the past was notorious for dog slow refreshes of records after modification; afraid.org (like most other third party services) updates lightning quick and I can also force a custom TTL. Afraid also offers some nerdy and useful things like fallback DNS, dynamic records, AAAA records and other v6-related goodness, support for just about any record type you can conceive - with a clean, intuitive interface... Plus if you feel benevolent you can also share domains in the pool for other users to use (you can accept/deny requests to Private domains). It's free to try, I recommend it. I find it a far better service than DynDNS.com, which one of my customers insisted on using for years.