Merge products / variants into one database table (one view / one list)

Sorry but synchronization on the fly is the worst design possible. It is the best way to have “unsynchronized data”. Such bugs are the worst to fix because they are detected way after the real problem happened.
Also I do not see how MultiValue would be correctly synchronized.

I do not see for which use case we simplify. The only use case shown for now is probably the weird migration process I ever heard of.
Also simplification of UI should not come at such complexity expense on the code-side.

Except that you do not care about existing usage of variants.

Synchronization is always a nightmare. It took us more than 10 years to get it almost right for account. And this is just for on-demand synchronization.

Synchronization is a by definition a duplication of data.