When to use custom DB tables or add_option?

For the record, I will never encourage developers to use custom database tables. Yes, they’re easy to use, but you lose 100% of the data abstraction provided by WordPress.

add_option()/update_option()/get_option() are basic key-value functions. They store data in a MySQL LONGTEXT field. LONGTEXT can store over 4 million characters … so a 10000+ character option is definitely possible.