I just switched to dedicated hosting for my web server and my host does not provide DNS services. Is it good practice to host a DNS server on the same machine as my web server?
You can host DNS and web servers on the same machine, but it is the best option unless you have no other choice or you can not afford other choices.
Simply, hosting different services on different hosts allow you to have more secure servers. A good reason is that the vulnerabilities in one service may affect the whole system and thus affecting other services. When you have them separate, hopefully only one system will be affected.
Another factor should be looked at: system performance. If you expect that you server can handle the traffic volume of both services, it should be fine.
While there is nothing fundamentally wrong in running a DNS service on the same machine as a web service it has the drawback that there is no redundancy. On the other hand, for many smaller sites that don't also run an a mail server it often hardly matters, because if the web service is down it may not really matter whether or not the DNS lookup can be made.
Of course if you need DNS to be up for mail, or any other reason, it's a whole other matter and you really should have a second DNS server.