Unless someone has really seen them despawning, I don't think that is precisely the case:
I have been taking close care of a village for two or three months now. First i trapped all villagers by making many 1-deep holes in the ground, placing each in one, and placing a dirt block above their heads so they wouldn't jump out. They couldn't move so they only turned around. No villagers disappeared while they were like this.
After some time, I freed some for mating, then made some ‘houses’ and trapped three villagers inside of each. The insides were 5x5x5, well lit and free of danger. After travelling several times I realized some of these had ‘disappeared’. Zombie spawning was not a possibility because, had a Zombie spawned in a room, it would have killed all three villagers, but usually only one or two disappeared. However, the ones in the other traps (the holes in the ground where they couldn't move) were still there.
Since they were free to move around, I think my villagers were crowding in the same space (next to a wall), then when the game loaded, they were relocated to occupied blocks, where they died of suffocation. I've seen it happen with animals.
I'm playing 1.5.2 with Optifine 1.5.2 HD_U_D2 (I saw animals dying of suffocation this way before modding Minecraft, though), SSP.
Please fix this issue, I don't want to have all my villagers stuck in holes so they don't disappear. Thank you.
First time I ever wrote a problem so I am not really good at it