In general, it's probably better if things have to be proven illegal. I'd rather that my life wasn't limited to only doing those things which have been pre-approved. If there's a problem with something, then it should be explicitly prohibited; not the other way around.
Gray area means that small loopholes in legal language don't instantly balloon into carte-blanche to commit all kinds of crime, without them all it takes is a clever reading of the law to break its spirit.
Practically, this means the government cannot regulate complex industries and situations. Things like "food safety" which are the bedrock of all modern countries are usually not possible without these sorts of gray areas.
To continue this analogy, I think the problems are, the process to fixing it is arduous and difficult, as much as writing it to begin with, bugs become expected behavior and have to continue being supported, and the "business case" executives have too much say in writing it.
Imagine that I'm trying to disallow a particular type of fraud that's difficult to define. I might spend years or decades trying to write down the perfect law of what some unethical finance people shouldn't do all while they get away with a thousand variations of the "I know it when I see it" crime.
Implied by this, we have to choose between:
1. Very frequently updated laws everywhere (multiple orders of magnitude faster than today)
2. Criminals get away with crimes that could totally be prevented with "gray area" laws.
(1) does not seem compatible with democracy and (2) is not politically viable in any country. Things like food safety scares require immediate and effective action by government or bedlam follows.
This generally works by giving a government agency the ability to frequently redefine the placeholders in the laws
> does not seem compatible with democracy
Democracy is inherently a poor choice whenever expertise is needed. It's better to let experts do their thing and then hold them accountable for the results.
1. Agencies necessarily have limited scope and tools available.
2. In practice, not all complex topics can be handed wholly to agencies in a democratic system, inevitably people and legislators want a say on some of the bigger issues (housing, healthcare, etc.)
It's worth noting that agencies today are heavy users of gray area laws and still often find themselves overburdened with policy decisions. Iterated gamesmanship can only make that load heavier.
I'm not saying it's nice / fair, but this is reality. It's similar to putting a buffer overflow bug in a C/C++ code on purpuse, but hiding it in a nice function.
But nobody wants to see a big explicit carve out like that because of the obvious unfairness (it's a huge advantage to multinationals over smaller companies), so they try to make it less obvious.
The best way to prevent this is to use taxes that can't be avoided through transfer pricing, e.g. VAT. The company can move their headquarters wherever they like; the tax is paid to the jurisdiction where their customers are.
But the other dirty little secret is that this would have to be government revenue neutral (just an increase in fairness), because if it actually increased the amount of taxes being paid on net then consumer prices would go up or retirement accounts would go down or both, because the money has to come from somewhere. So doing the thing that increases fairness has to be done without help from the people who want government to spend more money or you'll be impacting ordinary people who won't like it.