I've seen these custom fields tables in a number of database schemas I've worked with in the past. It adds dynamism to a fixed table structure. I wonder how CRMs do it these days without having poor performance at scale?
There are more solutions than these, but until you're at truly custom DB scale with a specific problem here, these will solve it for you.
That worked great... until the thousands of instances had to be merged into a single unified schema.