It would seem that the answer at least partially no, as rendering a simple cube scene with no passes enabled takes 3 seconds, while with all passes enabled takes 9 seconds.

I always imagined that blender rendered the image and while doing so gathered all the information needed for the various passes, then only saved the passes enabled in *Renderlayers > Passes*.

Is this the case? If not, what does blender actually do?