[This article][1] in SIAM News sheds some light on the first question, so it might be worth a look.  It argues, for a mathematical audience, why researchers *ought* to publish their source code, and lists many of the reasons you might hear why researchers do not share their source code.  It does so by a clever analogy, one that compares the sharing of mathematical proofs to the sharing of  source code.  Take a look; it has quite an extensive list of reasons why researchers might prefer not to share their source code (as well as some responses arguing that those reasons are not good ones).

Here's a citation:

Top Ten Reasons To Not Share Your Code (and why you should anyway). Randall J. LeVeque.  SIAM News, April 1, 2013.

  [1]: http://www.siam.org/news/news.php?id=2064