Both ShowDialog(); and ShowDialog(IWin32Window); seem to do the exact same thing to me. The documentation isn’t very clear either.
I’ve been told that ShowDialog(IWin32Window); will ensure that the dialog window is on top of the whatever is passed in as the owner window.
The MSDN documenation makes no mention of this, so it feels like a bit of black magic.
http://msdn.microsoft.com/en-us/library/w61zzfwe.aspx makes it pretty clear that the parameter represents the owner window. And that is the behavior of an owner window – it stays behind its children and doesn’t close leaving its children still displayed.