Building the level and moving through it is easiest, and works ok for small levels. But if you wanted large levels, you would quickly start using lot's of memory. The most efficient way (memory wise) is to build your screen out of blocks and update them as you scroll through. You could do that for an entire level I suppose, but that would be a lot of sprites in memory at the same time, compared to just having the on screen ones.
I did a small test for an isometric type game awhile back which used this method. It got wiped with a hard disk fail unfortunately, and only a video of a bug I was having with scaling in and out remains. But it worked pretty well and allowed for massive levels. It allowed scrolling in all directions as you would expect from an isometric game.