nVidias argument for not opening up the Linux driver is that it shares a lot of code with the Windows driver. I'm not saying that this argument makes sense, but it's the one they use.
I thought their argument was that some non-trivial amount of code in their driver is licensed somehow and they're thus not free to open source it. It sharing code with the Windows driver is the explanation for how that code got into the Linux driver to begin with.
I might be waving hands here, but I got impression that actual components that do raw processing in GPU are not that complex. Complex part (and which produces the performance) is the pipeline feeding data into those units. GPUs are also programmable chips so even publishing driver that shows how graphic stack on GPU side is set up could potentially reveal whole architecture of that chip.