That's correct. Whenever the result of one node is a dataset and it's joined to a select node, or at the end of a campaign when your exports are created, a temporary table is bulkloaded up to the database. If there is an error in the campaign, it's possible those temporary tables are not dropped properly.
A daily "drop anything in this schema older than 24 hours" script should be safe (unless you have campaigns that take more than 24 hours, in which case I expect you to post another question asking why your campaigns are running so long!). This assumes you are using a dedicated schema (see your business context properties) for your temporary tables. Otherwise you'll need a slightly more surgical approach ("drop anything named T% older than 24 hours").