Say you want to simplify the tax code, so you impose a flat tax on income. Nothing could be simpler.
If I’m the CEO of a big company and want to own a fancy house, I’ll have to pay myself a big salary and that’ll get taxed accordingly. Fair enough. However, maybe I institute a new policy for my company: it will purchase residences that employees will be allowed to stay in. There will be furnished condos for relocated hires and short term workers, and studio apartments to serve as crash pads for people working late. The company will also own a fancy house which it will let the CEO occupy as part of the conditions of his employment. I won’t have to pay myself the salary to cover my mortgage, and my tax exposure will decrease.
If you think this is unfair, an obvious gaming of the system, fine then–outlaw it. Say companies aren’t allowed to own houses that their employees live in or (if that’s too draconian) maybe that employees have to be taxed for receiving a living allowance. Now you’re in a complicated supra-fungible area where you’re trying to put a value on a living arrangement. You can do it, but there’s no way it won’t be complex.
This complexity will always creep in, because there’s an adversarial relationship where one side stands to make money off ambiguity, so their effort will be devoted towards finding the ambiguity in whatever tax code you have. And in language as in life there will always be ambiguity, so you’ll always be in an arms race. This is fine–there are economic and political systems that adapt well to states of permanent conflict, but don’t expect to find an easy way out.