Question: I'm wondering why some people release software as freeware, yet they don't release the source code. Why is that? I can think of some reasons, yet most of them don't make very much sense. Why would you want to keep the source closed but let the program be freely available (free of charge, not free as in freedom)?

Answer: 
One I don't see here yet - because the source code has value in itself, separate from the application as a whole.

If you have useful libraries that you've written, you're likely to use them even in projects that you intend to give away. That doesn't mean you're willing to give that library source code away. And without those libraries, the rest of the source code is probably worthless.

If you give away library source code that you've developed over a period of years, you're giving a competitive advantage away - very likely to your competitors.

One thing that I think is often relevant, though - that code probably includes libraries that have had time, effort and even emotions invested in them over a period of years. It would be like inviting thousands of people to read our diaries.
Despite the general bad idea that security-through-obscurity is, in the malware removal field, its a constant cat and mouse game between those of us who write analysis/removal tools, and those writing cleverer and cleverer malware. Sometimes we release a tool freely to users to use, but try to obfuscate the tool's operation in order to make it more difficult for malware authors to defeat the defeat tool :)

This is obviously atypical for most software, but it's something I see all the time.