Extra attributes for models: columns or other storage?

Do we want to keep the extra attributes for models (e.g. Enterprises) in extra columns, or would it be useful to move some of them to another structure, like a separate entity-attribute-value table, or (in the future) a JSONB column? This would make it easier for separate networks to introduce extra attributes only they need, without having to modify the core tables.

Of course, this flexibility comes with a cost, so we should not do it with attributes that we want to use in queries (as looking them up is inefficient). But for all the sparse and display-only attributes we have, this could be a nice solution (e.g. the social media links for an Enterprise, or even the optional and compulsory checkout fields.