There is a great article about PCH problems here.
1) Why does it not occur every time I do a rebuild?
This is a bit complex to answer surely. Since it is not happening every time, it could be several issues. It is most likely due to memory allocation. From the article :
1) Fragmentation of the virtual memory address range(s) required by the PCH before CL.EXE is able to load it into memory.
2) Failure of the Windows OS under heavy loads to increase the pagefile size within a certain time threshold.
It could also be a Pagefile size problem (most likely on Virtual machines) but I believe you would have a message similar to this :
c2xx : error C3859: Failed to create virtual memory for PCH [...Project.vcxproj] c2xx: note: the system returned code 1455: The paging file is too small for this operation to complete