I am agnostic about Open Source vs. Closed Source. That being said, when I go with a Closed Source solution I expect the solution to be reliable enough that I don't feel like I need the source. I anticipate that there will be defects ("A sufficient condition for program triviality is that it contain no bugs"), but that these defects will either:
My canonical example is HCL-eXceed, an X Window System server for Microsoft Windows (3.1/NT/2K/etc.) that just works. When I was at Thomson, we did encounter a few defects in HCL-eXceed, but either they were minor or they were fixed in the next release. HCL-eXceed was reliable enough that I didn't feel the need to possess their source code.
The reliability of closed-source software is an issue that has not been dealt with much in the literature. When you have Open Source software, you can fix it yourself if something is not right (which I have done for Perl). When you have Closed Source software, you must rely on the vendor to fix any defects. Although I have a bias due to being a software professional, I think that my thoughts echo those of non-computer people -- that part of what you are paying for with Closed Source software is the assumed professionalism of the vendor. This professionalism should be demonstrated by the amount of design, testing, and quality assurance work put into their software products. You can afford to pay less for Open Source software, because you or someone you hire can fix the software. When you buy Closed Source software, you must rely on the vendor to fix any problems.
The upshot of this issue is that (IMHO) most people expect that Closed Source software will be more reliable than Open Source software because:
Open Source software has raised the bar on software reliability, because as Open Source software has matured it has grown to be more reliable than some of the Closed Source software now in use. Closed Source vendors can still survive, but they must get serious about doing enough design work upfront with enough testing in the back end so that their reliability matches that of equivalent Open Source software.
P.S. I'm not talking about BDUF (Big Design Up Front), but unless you are creating a totally new kind of software you need to spend some amount of design time upfront, along with more design time as the design evolves.
P.P.S. The other reason you can need source code is to expand the software if it does not have built-in expandability. Many software packages these days are quite expandable enough without the source, however (think Microsoft Office/AutoCAD/Frontier).
P.P.P.S. I've borrowed the "P.S." idea from Dave Winer