Often in the malware world one of the most important steps is the process to obfuscate the malicious software so investigators have a hard time guessing how to fight against it’s resilence and it’s goals.
The same happens with privative of freedom software, often the goal obfuscating the code it is not only because you want to protect your “intelectual property” but because you want to avoid investigators guessing how much and how your application surveillances it’s users.
Other common reason is you know your code is insecure, it is difficult/expensive to solve and you want to avoid people knowing it at the first look.
You or your users eventually will be cracked, but with some luck no one will know it, only hoping the cracker only wants the information and do not take down the service so people start making questions.
Of course there is also selfishness, people will depend of my solution because once they start using it they will have a really difficult time if they want to migrate out because they will have their data adapted to my privative format or tied to bussiness specific features that they will have to recreate in whatever new system they want to use.
Only if you can free your code you can prove your solution is really trustworthy or not, people will be able to tell it after reading your code.