How is one supposed to know who can and cannot take money from the smart contract, if not by consulting the contract? If my sign says "Apples $0.00" and you take an apple, can I sue you (or have you arrested) on the grounds that you should've known the sign was wrong and the apples weren't free?
Yes. Systems in the real world are supposed to have common sense. That's why we have judges to decide if it was clearly an error, and people taking advantage of $0.00 should have known this, and therefore acted with malice.
Only cryptocurrencies are trying to have it both ways. They boast that big bad governments can't touch their money scheme, until someone finds a loophole in the code-is-law. Then suddenly law is law again.