Patterns (CanvasPattern) are separate global objects (in the sense of canvas' context) not bound to the method using it as style.
As the pattern is not "aware" of it being used or not, and if, it's used for style only which again neither is bound to the method using it position wise, the coordinate system becomes the only anchor point so-to-speak as to where to draw and tile the pattern.
Doing a, for instance, rect(x, y, w, h) will only inform browser where you want to render the rectangle itself, not how to fill it which is what the style mode holds information about and is something that is performed in the next step when compositing/filling the shape with the current style (which can be any of solid color, pattern or gradient - the latter have similar behavior as pattern).
Another aspect of this is that paths can be accumulated. For example, if you did:
ctx.fillStyle = myPattern;
ctx.rect(x1, y1, w, h);
ctx.rect(x2, y2, w, h);
ctx.fill();
which of the two rects should be anchor for the fill operation? (fillRect is just a shorthand for rect+fill but using a temporary path not affecting the current global path).
rect(), arc() etc. only creates paths and when you invoke fill/stroke, those paths are rasterized to canvas with whatever fill/stroke style that is set.
The browser (or the graphic sub-system of the OS) may do something like this when fill/stroke was invoked:
- Rasterize the shapes/path using transformation matrix for the points (scale, orientation and position) and create an internal mask/matte
- Use that mask/matte to composite (fill) that mask with current style
- ..other steps
Now that there is just a mask/matte you don't have any defined anchor points anymore and the coordinate system is the only thing left.
(looking away from possibility to use different algorithms, ie. polygon filling, path would still exist etc. - but performance and graphic system affects these decisions as well as the specification which goal is to achieve the same behavior cross-browser and cross-platform). I am half asleep writing this so I hope I didn't make it more foggy..