In most cases, Cycles render is exactly identical be it on GPU or CPU. I noticed a slight difference when rendering on a home-made 3 server farm, 2 with GPU, 1 with CPU, it gave a flickering effect because frames made with CPU are a bit different. I narrowed it down to the transparent shader, as the attached filedemonstrates. Render it once on GPU, then again on CPU with another slot and compare. Now I don't know if it's an absolute rule that Cycles should render identically on GPU and CPU, is it ?
I tested the file on a 2.68RC1, and the 2 renders are identical, so something happened between 2.68 and 2.70, I don't have many versions at hand to try.
My specs: Windows 64bits, GeForce GTX560Ti.
This file has (near) overlapping faces, which is always problematic for raytracers. Here different float precision on the GPU and CPU makes the results different. The suggestion for now is to avoid this case and increase the distance a bit. We might improve the accuracy in the future, but for now it's not considered a bug.
Thank you for your analysis. Still it seems strange to call this anything else than bug. Particularly since it worked fine before. I do agree it is not a major problem, it is not very often that cpu and gpu are used together and must match. I think using shrinkwrap with a very small offset is pretty commonplace.