My recollection is that people implementing infinite smooth scrolling on the Amiga dealt with the wrap-around issue by replicating the streaming writes so that when you eventually reset the window to the opposite edge the data there is ready as an identical copy. On the NES it's usually assumed you do this via mappers in the carts (so you don't have to replicate the writes but can rely on address mirroring) but were there non-mapper-based smooth scrolling games on NES that replicated writes?

@pervognsen I don’t know about the NES but I can confirm that you can do infinite side scrolling in 2N space and infinite 2D scrolling in 2Mx2N space where M and N are height and width of the play area, using 2x or 4x replicating writes, respectively (spaced out over the play area) and then snapping the screen “back” when going off buffer.

Special hardware might simplify this further.

@christer Thanks for the confirmation. Yeah, with a vanilla MMU you should be able to avoid the replicated writes for one scrolling direction using page mirroring like in https://fgiesen.wordpress.com/2012/07/21/the-magic-ring-buffer/. With special hardware you should be able to avoid it entirely (which I think is what the NES PPU does) for all directions by doing wrap-around addressing similar to fixed-function texture units.
The Magic Ring Buffer

This is a cute little trick that would be way more useful if there was proper OS support for it. It’s useful in a fairly small number of cases, but it’s nice enough to be worth writing …

The ryg blog
@christer One nuance regarding the backing area is that if the buffer you're updating contains tile-level rather than pixel-level data then I think you need an extra +1 skirt to avoid visual glitches since with pixel-level smooth scrolling of a tile map you have partially visible tiles at the screen edges. I think that's related to what @slembcke mentioned. And I guess this also applies for pixel-level data if the layout uses bit planes.
@pervognsen @slembcke this gets machine specific quickly. Eg I remember the C64 has a pixel offset feature where you can shift the whole screen 0-7 pixels (I think) and I believe side scrollers would do a full charset step at “offset 8” and reset back to offset 0. Or something equivalent. Not sure how they clipped the partial characters at the right of the screen; maybe with the border?