Every level puts together a set of spawners (for bubbles, small bubbles, and jellyfish, and optionally fish). The bubbles (aside from the ones that are spawned on level start) spawn at a fixed distance apart, once every X seconds. The column that was spawned the longest ago is the next one up once it surpasses the timer. So it's very random but you still generally get a whole row of bubbles spawning around the same time (every X seconds, and X pixels apart, which is configurable per level). I think it gets really annoying when the time between spawns is low rather than increasing the distance, since it makes it more of a timing issue than strategy. And the jellyfish and fish spawns can sometimes be almost physically impossible to get past without dying, which wouldn't happen in a hand designed level. But since fish and bubbles disappear after they go off screen, I'm not sure how I'd make a level by hand.