but my design doesn't calculate other_root as it appears in your tree (is not necessary).
It is necessary to maintain compatibility with SPV nodes/wallets.
Any code that just checks merkle paths up into the block header would have to change if the structure of the merkle tree changed to be three-headed at the top.
If it remains a binary tree, then it doesn't need to change at all-- the code that produces the merkle paths will just send a path that is one step deeper.
Plus, it's just weird to have a merkle tree that isn't a binary tree.....