The other benefit is that it enables companies to do innovation where they would not have been able to keep the idea secret in the first place. E.g. a pharmaceutical drug whose chemical composition would be trivial to reverse engineer. In that case, the patent does not serve the purpose of making the knowledge public in exchange for a monopoly. What it does do, though, is incentivize innovation be rewarding the inventor with the "rights" to that idea.
The real problem with patents is when patents are of trivial things that anyone could have thought of without much effort. That is why I don't support any software patents, because it's so much easier to patent trivial things in the software world than the physical world.