At least on my ThinkPad X200, the problem is that the LVDS output is not by
default the primary display. It appears that the particular xinerama calls
xmonad makes do not enumerate displays in left-to-right order but in some
other order (as might be obvious, I'm not an expert at X11). Try
running "xrandr --output LVDS --primary"; then -w should be the LVDS panel
and -e should be the VGA output.
FWIW recent cards allow connecting 3 or possibly even 6 screens with the
outputs being numbered at random by the driver (no apparent pattern,
depends on card make, model, revision, ..)
To get predictable behaviour XMonad should detect the virtual screen layout
using xrandr and present the screens in order derived from the place they
appear in the virtual screen.
You possibly could make a script that numbers your outputs by calling
--primary as many times as there are screens to shift each screen to the
top in order but there is no guarantee that this will give you any
particular order, only that the "primary" is first.
Maybe I could try with 3 screens to find out if the order is just rotated
or if you can really get the screens in different order.