Looking at the implementation:
We only ever trigger this when a page changes, we do not trigger it on infinite load of topics.
In fact I even tried this code on local and confirm that infinite loading of pages is not triggering multiple page views.
appEvents.on("page:changed", (data) => {
if (!data.replacedOnlyQueryParams) {
debugger;
}
});
The GA4 and GA3 implementations in Discourse are very closely aligned.
Can you still reproduce this issue?