We have a client that would like to create custom tables within one of the Sitecore content databases, either master or web. Is that a good or bad idea? My own opinion is that is a bad idea, for reasons of security, backup and compatibility.
If you really do need just custom tables then yet generally this is a bad idea as it complicates upgrades and maintenance. Usually you'd create an separate database to store the custom tables and data. Use your own DAL and then piggy back of Sitecore's caching so that your custom data is refreshed along with Sitecore's data.
Please provide more information on the data you/the client trying to store. It's pretty rare there is a need for this these days with how flexible Solr/Azure and xDB is for storing this data and connections to custom data via xConnect & Data Connectors etc.