Prevent creation of unused database tables?

I’m afraid it won’t be easy to do (if possible at all).

These tables are empty and you don’t use them, but… There are still many SQL queries that use them in JOINs. It means, that if you remove these tables, these JOINs queries will cause errors. There are many functionalities in backend, that use these tables – you’ll break those parts too.

On the other hand – removing these tables doesn’t make much sense. They’re empty, so they won’t cause any performance issues. And they’re not clutter – they’re just DB structure.