The binary blob provided by Nvidia have been quite reliable across the years (and I think they've been available for more than 10 years) while the open source ATI/AMD drivers have frequently failed to deliver.
In my experience, the open-source radeon drivers are significantly more stable. Fglrx was a stinking pile of crap that has officially been abandoned - the whole driver team has switched to the open-source drivers, now.
Linking to Theano-CUDA is always a nightmare.
Forget about optimus. That has never worked correctly on Linux.
The only reason I can see someone wanting nvidia on linux is for CUDA. And in that case, you can't just use the ubuntu pre-built version of the drivers.
If you are not doing neural nets locally on Linux, you shouldn't get a discrete graphics card. And if you do get a discrete one, make sure it's not Nvidia since their open source drivers are much inferior to AMD's.
My current (and only) working solution is to disable the Nvidia GPU on a host and use it PCIe passthrough to assign it to another Linux or Windows VM. That's the only stable solution that doesn't break the world when enabling/disabling the discrete GPU.
We shouldn't have to revert to such extreme measures...
Both are somewhat annoying, but far less than only being able to use it in a VM. That said, I'm curious about how you manage the VM output, considering that PCIe passthrough requires a dedicated screen.
In the even rarer case that I wish to play a game, I have an HDMI connection between the GPU and my projector, which I can enable with a remote control.
Learning how to use qemu is a bit of a pain (hint: use qemu directly, virus is a huge waste of time) but after the initial learning curve the setup is seamless for my use case - and I feel safer without the GPU drivers having access to my normal desktop. I much prefer this setup to dual-booting Windows for gaming. The VM spins up in a few seconds and shuts down when not in use (turning off the GPU in the process).
If you intend to run Linux on the thing, buy things that Linux supports out of the box. That probably means sticking to the working Intel stuff for now. You'll thank me later (or not, because you won't miss the problems you don't have).