This is because zombie sieges ignore most of the usual spawn requirements, including light level and blocks like right-side up stairs and slabs (normally mobs can only spawn on blocks with a solid top surface) - the only ways to really be safe against them are to either have less than 20 villagers or keep the size small enough so you can build a wall closer than the minimum distance sieges can spawn (32 * 0.9 - 8 = 20.8 for the smallest village):
MC-59440 Siege zombies spawn inside some blocks
MC-155544 Zombie siege spawns on illuminated terrain
(interestingly, both of the bug reports are considered to be valid bugs)
IMO, zombie sieges shouldn't be in the game, or only on Hard (though I dislike difficulty-exclusive features; I made most such effects possible on all difficulties) - I completely removed them myself (they are already broken in 1.6, and while there is a fix posted on the bug report that I could have used I just completely disabled the code to avoid wasting CPU cycles on failed attempts; either way, they may as well not be in the game for me since the naturally generated villages I protect are never large enough and I don't make massive villages or trading halls; even the village in my main base in my first world, with villagers I trade with for emeralds and diamond gear, only has 12 villagers).
Not that sieges matter when this happens every night, not just 1/10 of nights, just from normal zombie spawns (as mentioned above they are broken in 1.6):
However, you can at least ensure they are protected by lighting up the village and walling it in; I can then completely forget about them while caving, which includes spending hours exploring the area within mob spawn range (and I certainly do not want to have to bring a clock and bed and sleep every 10 minutes, 20 times per play session).
xD ok here is a picture, I'm pretty sure I build a wall around their houses and enough light.
ignore that villager in the rooftop.