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.
I have several freeware apps for which I wont provide source code. The main reason is because they share large amounts of code with commercial applications. Consider something like a document viewer... that still needs the rendering system of its commercial cousin, a document creator. Another reason is some of the apps also use non-open sourced 3rd party components.