I prefer working on several small projects OR one giant project.
When working on a several small projects, I can avoid getting stuck by switching to another project. When I'm typing away madly I don't stop for anything, but when I get bogged down it's good to have something else to switch to. With small projects the cost of context switching is relatively low, so it's easy to swap time between them.
Similiarly, with one big project there are many things that need doing. However, it's very difficult to keep the whole structure in my head, so it's not good to have any other ones on my plate while I'm working on it. However, the number of facets in that one project allow me to switch between tasks without changing the whole project context in my head. That way when I get bogged down in one area I can just switch to another area (or a bug) for a bit and come back later. Again, the cost of switching is low here.
I have trouble working on more than one large project. I can't keep both program structures in my head at the same time, so the cost of switching between them is high. That means that it's very difficult to go work on the other project when I get bogged down in one. So I tend to focus on one and neglect the other. That's fine when you have lots of time, but for crunch projects it doesn't work well for me.
It's important that the projects I have (whether facets of something bigger or many unconnected projects) supply enough diversity that my brain gets exercised in different ways. Your subconcious mind never stops thinking. Doing something unconnected to the current problem is merely a tool to let your brain relax and find a solution.