Custom tables are far safer than adding/modifying fields in the existing ones. Discourse won’t mess with your tables but you may need do some work to keep up with the changes in core.
discourse-subscriptions and discourse-calendar are good examples of official plugins having their own tables.