Cita: En realidad lo que hace es descender el padre, no el hijo.
Esto pasa, por que el hijo tiene un ancho de 500px.
entonces el padre, no tiene un ancho especificado, por lo que sera auto, y se ajustara al del hijo.
si el hijo tiene 500, el padre tambien lo tendra, y no hay base del padre para agarrar el margin, por lo que el hijo se mueve y el ancho del padre lo sigue.
hay varias maneras de hacer eso y que funcione (el 100px de margin, los 500 del hijo y el padre no se mueva)
1) hijo 500px ancho, padre 600px de ancho, margin izq o der de 100px (hijo flotado a left o right)
2) padre 500px ancho, padding left o right de 100px al padre y 500px de ancho al hijo
Saludos.