Reusing sprites is a different thing than loading everything from the beginning.
Both techniques are used either together or separate.
The example you mentioned with clouds and bushes simply means that the game loads one sprite (the cloudy-bush thingy) and uses it to draw both the bushes and the clouds. So only one sprite exists in memory, but multiple things are drawn on the screen (with some colour alternation).
Preloading everything from the beginning is another issue. In some cases you don't have the luxury of a good CPU to load a lot of data on the fly, so perhaps it is better to load everything on the beginning, especially if the game is small. It is also cheaper to include multiple sprites into a single texture, so if a game (like the old ones) is small enough to fit all sprites in a texture, then they load everything anyway.
What should you use? In today's hardware, nobody really comes to that issue. If you use a library to handle graphics for you, then you only declare when you will use them, and it's the library's responsibility to decide when to load them.
Unless you are advanced enough to want to make games for older consoles with harder programming languages like assembly, such a person would know how to load graphics manually depending on the platform.
For more information it would be better to ask the teams that actually made older games.