In both approach you see the table will have all columns to gather where for one column you will always have some value for every row and for remaining you don't know how frequently the column will have value, as they are not mandatory.
In such cases I would separate the data by its probability of availability.
Table_1 = Domain_Owner --> DomainID, OwnerID
Table_2 = Domain_ExtraUser -->DominID,AdminID,TechID,BillingID
Table_3 = Contact --> ContactID
Now in the above design
Table2 has same issue. As @JoelBrown mentioned when
NULL ability is non-deterministic for column the performance of the queries against them will be unexpected until you do some testing.
If tables are not expected be huge like in millions of rows you can transform
Table_2 in to key-value pair.
TABLE_2 = Domain_ExtraUser --> DomainID ,ContactID