Right I understand the nuances - I was simplifying for the sake of brevity.
However, "binary form" isn't the only issue. You also can't distribute things in source form under a license that further restricts its distribution. ie - you can't distribute a libMesh based code under NDA.
The GPL is more onerous than you believe - it's not just about what ends up in your ABI... it's also about what can be considered a "derivative work". Go look up the discussions about PyQt and GPL. It's a python library using GPL. What does GPL mean to python? I mean, you don't ever distribute a "binary" linked with that python library, right? However, it has been decided that even though you never "link" to it... any python code "using" PyQt still has to have a GPL license because it's a "derivative work".
Lots of quotations in that paragraph because I don't quite agree... but the Qt people were upset enough that they created PySide: http://qt-project.org/wiki/PySide
which is a complete reimplementation of PyQt under an LGPL license...
Anyway - we gotta get this stuff out of libMesh... it goes against the general principles I think most of the developers have: that we want to create open source software that can be utilized for both open and closed development...