It is intentional, does happen in SMP, and cannot be disabled on a vanilla server as far as I know. On a Bukkit server, the DisableIt plugin can disable any type of explosion, including beds.
In the Nether, there basically is no time of day — bring a watch with you and see what happens. The beds only let you sleep in them when it's night time, and this lack of time apparently confuses them to the point of spontaneous explosion.
Sleeping in the Nether has never worked, but before Beta 1.6 the beds were neither sentient nor quite as explosive; you'd simply get the "you can only sleep at night" message. Of course, this isn't really appropriate for the Nether, since it is never night. Notch likely wanted to make it more obvious to players that beds don't work in the Nether at all. Why explosions? I'm not sure, but it certainly drives the point home, doesn't it? Possibly Evil Notch had a hand in this.
Well, after some serious testing, I found an alternative for accomplishing this in vanilla. Not a super simple solution, but in case anyone is curious, here's what I did...
By summoning creepers with a riding armor stand with certain settings(making them invisible, invulnerable, markers), as well as super fast command block redstone clocks, I found I could detect the moment the armor stand ceases to be riding the creeper, which happens to occur right at the time of explosion(or VERY close). Creepers also have an explosion radius tag, which happens to not cause damage when set to 0. From there, I'm working out a way to summon a damage potion from the armor stand that damages only players using the /execute command! It should work well once I figure it out. I've already worked out how to summon a firework from the location, which happens basically instantaneously at the time of the creeper explosion.
Using a very similar method, I was able to detect when the creeper's health reached 0 using the armor stand, thus effectively targeting the location of a dead creeper. Since the death animation has to finish playing before the armor stand ceases to ride the creeper, I'm able to execute commands on the armor stand and destroy it, all before the death animation is complete. This means that I am able to distinguish death types of a creeper! Even make completely custom drops, or do anything I can think of within the realm of vanilla commands on the death of a creeper.
Happy crafting! Hope this helps someone.
[UPDATE]: Instead of a summoning a potion at the time of death, I instead targeted all non-player entities in a certain radius from the armor stand riding the creeper at the time of explosion and applied an ActiveEffects tag with resistance*5 for about one tick. I then summoned a primed creeper to explode during this split second of immunity using the Fuse:0 tag. It works well, as all of this happens within milliseconds using scoreboard dummy objectives and setblock/fill command block clocks.
Best Answer
In order to survive, you are supposed to place a block in front of the bed and click it as far away as possible (around 5 blocks), without being positioned right beside the block in front of the bed. This is so the block will take the main explosive damage of the bed, not the player. Additionally, try to use a block with high blast resistance, such as obsidian, as it will absorb more damage than a block such as wood. A bed explosion in the Nether or the End is the second most powerful explosion possible. It is as powerful as a charged creeper (which does 97 damage points on normal mode) and is much more powerful than TNT.
Source: I have done many experiments on this.