As mentioned in the comments, a combination of having to describe the problem here and a bit of subsequent thought caused me to realize that although minimumInteritemSpacing is a CGFloat it doesn't make sense to pass it fractional values and its behaviour when you do so is undefined. This is because, on devices where there's a 1:1 point to pixel ratio, there is no such thing as half a pixel. It just so happened that in some cases it behaved as I expected and thus blinded me to the real (and rather obvious) problem.
Hopefully reading this can help others quickly realize the mistake.