The thing that taught me the most about scrolling was playing around with hacking metroid and super metroid. Scrolling in super metroid is fairly sophisticated, if still limited by hardware.
Learning to figure out the scrolling PLMs was a big part of figuring out how to make your rooms flow without breaking. In the vanilla super metroid, the scrolling system is used to pretty good effect to conceal secrets or build tension.
Up until doing some rom hacking, i'd never really appreciated scrolling before. I'd used modern engines that pretty much handled all that stuff for you, but it wasn't until peeking back at older games did it really become apparent just how big a deal scrolling is and how much effort is actually put into making good scrolling.
16-bit platforms like SNES and Genesis/MegaDrive had a large enough VRAM to hold a background with enough area that you might be able to get away with reloading data into VRAM "between rooms".
NES has enough VRAM for 2 screens - either horizontal or vertical (it could do 4 screens if the catridge had extra VRAM on board which was rare) and VRAM can't be updated except during vblank. The game engine has to spend time copying new data ahead of the visible screen, and also must spend some cycles each frame letting a DMA process copy 256 bytes of data describing sprite positions to the video chip's object RAM.
Not as bad as the Commodore 64 where the scroll registers shift only up to 8 pixels and an engine has to recopy potentially a full 1k of screen and 1k of color RAM to move things (barring things like VSP which could corrupt RAM on certain C64's) - or the Atari 2600 that had no video RAM at all and required programming the video chip per scanline right before the TV is drawing it.