Software that is patented and open source software both accomplish many of the same goals. The patent, however, satisfies these goals better in three ways.
First, a patent requires that the inventor fully disclose his invention to enable someone to use it. This detailed explanation of the inner workings of a piece of software is often much more detailed and thorough than any open source software documentation. Each patent is written to a very high and consistent standard of documentation. A patent explains the overall principles and theories of how the software works, not just what the inputs and outputs are. Open source software documentation is hit or miss. You never know what you are going to get.
Second, all of the patents are stored in centralized, categorized, searchable, and publicly accessible depositories: various patent offices around the world. Open source software is generally available on the web, but finding it is another thing.
Third, patents have several uses as business tools, such as enforcing a market share, licensing, or for use in trading with other companies. Because there is a business reason for patenting, companies and individuals alike can finance their inventions through patents. From what I have seen, this is the biggest area of difference between the people for and against software patents. Making patents into a useful business tool requires a good business mind as well as an inventor’s creativity.
In one way patents and open source software are drastically different: patents encourage people to design around the invention and find a better way, while open source software encourages cut and paste. Open source software stifles innovation and doesn’t benefit society in the long run as much as the patent system does.