Thanks to @jvanier for filling in a great answer here!
Using JTAG makes it so that you cannot really brick your device if you have a JTAG programmer like the Particle programmer shield or the ST-Micro JTAG device, so that is part of the overall strategy of the devices. JTAG also makes advanced debugging possible and is really the only way to debug low-level complex stuff.
Yes, the driven state at power-up does trip some folks up. Typically the problem is short-lived since by the time your device runs the code in setup(), the pins are back to the usual state. There are two good ways around this: (1) know which pins are used for JTAG and avoid them for certain jobs and (2) design your external logic to require the opposite level or two pins a known state to activate. For instance, driving relays with these pins was a problem in the past so design your opto-isolator in the relay driver to require one pin to be held low while another set of pins is driven high to control the relays.