The use of DNS *products* is different then DNS *services*.
For PRODUCTS - If you are rolling your own DNS, you need to use one that works with your basic network setup. If you are all Microsoft, you can use one of the BIND9-based systems that are available for Windows or you can use the Microsoft DNS Service.
If you are using Linux/*BSD/Unix servers, sticking with BIND9 is fairly straightforward.
There are lots of other DNS servers out there, but the Gold Standard is BIND.
For SERVICES (you don't want to host your own), I usually recommend you go to your e-mail provider. Because of the amount of information about mail services stored in the DNS, my experience is that the DNS should be as close to the people that handle your e-mail as possible.
After that, I'd go with the DNS provided by your web hosting company.
After that, I'd use the service provided by your domain registrar.
If neither of those two work for you... Well, you're on your own

.
Some interesting notes: The 'forward' resolution (name to number) can be anywhere and is linked to your domain registration. Reverse resolution is provided by the people that "own" your external IP addresses. Because of this, it's not unusual for people to actually have two DNS providers (one for the forward addresses, and one for the reverse).