Per the title, glDrawBuffers is used incorrectly and has to be specified (per the literal language of the spec) every time the fbo is changed.
This is why deferred rendering doesn't function on Intel hardware (like an HD4000). ATI/nVidia treat the fbo a bit like a vao, which is not correct - drivers massaging out common errors.