In the game I'm working on, I have a master layout that the game takes place in, along with some extra layouts for the menu. I also have a bunch of layouts that represent my level layouts, named "1,2,3,etc...".
When I run my game, I have an event sheet that loops thru all these layouts and loads their data (objects, position, time limit, etc) into a dictionary. I then use that data to spawn out my levels onto the master layout.
The main reason I built the game this way was that, up until recently, there were no global layers. So, essentially, if I had 100 layouts for 100 levels, and I wanted to change some of the background FX, layer properties, etc, I would have had a huge amount of work to do, and the possibility of missing a layout, or corrupting some other settings.
That being said, with the system in place, I have some advantages. Memory isn't a problem for me, because I have a minimal set of objects and almost all of my animations are procedural, so that aspect of 'layout per level' is moot.
On the plus side: with this system, I can control object spawning, and break it up over a number of ticks if need be. And, since my levels are being spawned out of a dictionary, I can output as JSON to a text file, and simply update said text file to update my levels. So, instead of having to have people redownload my whole game if I change something in a level layout, I can just update one text file instead.