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: 
Hmm, what comes to my mind is

* Because you want to retain some measure of control over the product
* Because you want to reserve the possibility / right to charge for the product in the future
* Because you're ashamed of your source code
* Because you want to make sure you are credited for the product, and it doesn't get stolen and re-used in other projects (of which there is always a risk when you publish the code)
I provide open source code as sort of a community service idea, and as a portfolio idea. 

If I was selling software directly - I don't, I'm employed in a position where the company sells the product, not me - I would *more* than happy to sell my software as closed source. Allowing competitors to look over my code and reduce my competitive advantage is not in my best interest, as a rule.

Put another way, I do not consider releasing software as open source to be a moral imperative.