This is an old limitation in the render pipeline. The code quite straightforwardly just runs the uncropping code now when reading back full samples or cached render layers.
For full sample there is a bit of a design issue that I'm not sure how to solve. Compositing works on the entire uncropped image, so that's what gets fed into the full sample filtering.
In this patch we only do filtering for pixels within the border an discard anything outside. That ensures the render result matches non-full sample in simple cases and avoids border edges getting blurred out due to the filtering. However when compositing other elements into the image outside the border, or when extending the render in some way, then we no longer match the non-full sample render due to discarding anything outside the border.
I imagine border renders with crop disabled would be mostly used for previews or perhaps doing single image distributed rendering, in which case I think the patch would work fine. But maybe there's a better solution or something I'm missing. Mainly my intention with this patch is to make the cache result / save buffers case work for Cycles, full sample with Blender Internal is just a bonus and lets us get rid of UI exceptions entirely.