Most DNS are self-hosted on the same server (or within the same data center) as your own website. Which is mainly easy for people if they went the cpanel/whm route (Since most of the time its automated when you add a domain, or subdomain, etc)
But if you don't have cpanel, or you have a special setup, or you simply want the extra security of knowing your DNS server conforms to RFC standards by being off site, you may wish to use an external DNS.
I guess I could give you two scenarios.
1) You know how to setup a webserver and database server, but totally confused by BIND in a command line configuration and you're running Ubuntu on a low powered dedicated. You could keep the memory and cpu down by strictly running web and database, by using a DNS service to point to the server instead. (it's also a good way allow some more technology savvy clients to point to new domain names, without giving them access to your internal DNS configuration

)
2) You host your site on one server, but you got a crapload of c-block IP addresses at another provider. (remember the lil ubuntu box above with no cpanel, and using nginx webserver?) You could simply point your domain to the little box, proxy_pass it over to your actual more powerful hosting, and as such you've made a uniquely different IP address for your website than what your hosting provider provided you. (and it would still work since cpanel/whm setups are name based, they load up the site based on the domain given).