Disclaimer: I’m the one who added “Use limit surface”
Not sure what you mean with “less patches”, as far as I understand, this setting places vertices at the exact position on the surface, as if there were infinite levels of subdivision.
You are correct, and the limit surface is represented by set of parametric, bicubic patches that blender uses to calculate final vertex positions. What’s less known, is that when limit surface is disabled, what blender does is exactly the same, but instead of bicubic patches osd returns bilinear, flat patches corresponding to polygons of subdivided mesh.
What I meant by less patches, is that in limit surface mode you will have (roughly) one patch for every quad in input mesh, but when this is disabled you will get 2^n patches per quad.
It’s not obvious which one should be faster, because all the difference is in opensubdiv code, not blender’s.