How can I have different margins on first page vs. subsequent pages?

even with the first variant the #pagebreak() can be skipped: using set page() will always start a new page (unless it’s a trivial/non-change).

I would probably use a variant of the second approach:

#set page("a4", margin: auto)

#page("a4", margin: (left: 2in))[
    // do first page stuff ...
]

// do rest of document stuff...

This makes it more explicit that the first page is really just a single page. But it behaves the same as the original, so it’s purely a matter of taste.

Also highly relevant here: