In the function definition it has to always be last (basically “collecting the rest”),
but in a function call you can pass down the options (maybe some “collected rest from before” sa keywords. In a call they can be passed down before, because the last occurrence of a keyword wins.
In the concrete example, if the options would contain a width, that would be ignored, since that is set to 2 afterwards.
The same “collect the rest” also holds for the arguments (your y...). I n a function definition this has to be last (before the ;).