Maybe it is because the more advanced dev boards run I/O banks at just the voltage you don't want to use...
Well designed devboards allow you to set I/O voltage to what you need. And this is how I design my own devboards too. For example here is my most recent board:

Note zero ohm resistor and an empty footprint for another one at the lower right side of the board (as it is on a photo). By moving this resistor I can set IO voltage of one of connectors to 1.8 or 3.3 V. Second one is fixed at 1.8V as I'm using 1.8V QSPI flash chip for bitstream here.
IMO Hand-editing the XDC file is really the only way to go to ensure you you get what you really want, in a nice clear concise set of statements. I has also to be said that the syntax is awful compared with the 'primitive' UCF files used in ISE.
I actually found GUI for timing constraints pretty solid once you get used to it. Same goes for pin assignments - though I rarely use it as in most cases layout and routing drives pin assignments. I only use it after I completed board layout so that I can run P&R to make sure I didn't do anything stupid like using incorrect pin for clocks, or some other special functions (like aligning buses to IO byte groups in case I will need to use IO FIFOs in design).
However, doesn't everybody just take the vendor's standard XDC with the devboard and uncomment a few lines and change the signal names 
Well since I design boards myself I've become quite adept at writing pin constraints

Though I mostly write such file only once for a given board, and then just copy-paste it across designs. Same goes for MIG project file and DDR3 pin assignment files - but this gets a little more complicated in case I have several identical boards but fitted with different pin-compatible FPGAs. I also extensively use exporting diagram to tcl script function to save time for subsequent designs.