This happens less nowadays, because stuff like Android and ChromeOS, so why pay Microsoft when free beer OSes exist.
Just because you can read it, doesn't mean you can or will be able to actually fix it; not because of technicality, but because of personal knowledge.
In this case, they are both black boxes.
I once spent three days trying to figure out an issue, stepping line by line through hadoop (after figuring out the issue was in hadoop and not my own code). Yay, I proved the issue was actually in Java itself. Guess what happened next? We avoided the bug. Why?
- We couldn't update Java.
- We couldn't change hadoop because we were using a packaged solution. So, we just filed a bug with them.
Had the source not been available, we would have just skipped all of that, and it would have been our vendor's problem 3 days earlier.