I'm going to suggest several lines of research to you. Most of what you find is going to confirm the three design choices you highlight in the question.
If you look up "class table inheritance", you will get numerous papers that cover table design for supeclasssuperclass/subclass situations. My favorite write up is Martin Fowler's. You already seem to know most of what these papers will cover.
If you look up "specialization/generalization", you will get several writeups that address how the ER model was extended to cover the case that we call superclass/subclass case. The ER model doesn't help you with design issues, because the ER model is intended to be design agnostic. Many people come up with a relational data model, then depict it with an ER diagram. That's misleading in this context.
And, of course, the object model has inheritance.
If you lookup "shared primary key" , you will get some writeups that mostly confirm the design choices you outlined in the question.
The Stackoverflow area has three tags that group relevant questions. They are named Single-table-inheritance, Class-table-inheritance, and Shared-primary-key. Tags have a "Learn more" feature that will show youcover using a writeup about the tag subject matter. This can helpforeign key as well. This area does not have these tagsa primary key.
Your best bet is probably to use Postgress specific features intended to address superclass/subclass cases, provided you can get around the limitations of your ORM tools. Other answers have addressed this approach.