I would expect that to perform poorly at scale.
There is also a fifth option, though it is not very space efficient. That is to store every field in the JSONB column. Personally, that is what I would do.
This approach is known to be used successfully by many high scale companies. It ensures the highest degree of flexibility and still allows for full indexing of the fields. The schema would need to be enforced by your application, but that should happen anyway.