The truth is always in the datasheets, the schematics and the code:

The Arduino UNO actually uses the `/DTR` line to trigger a reset, as you can see on the following datasheet:

![reset schematic](http://www.m0g.net/stuff/arduino-uno-schematic-reset.png)

So basically, when the firmware of the Atmega8u2 (on the left) is [pulling the pin 13 low](https://github.com/arduino/Arduino/blob/master/hardware/arduino/firmwares/atmegaxxu2/arduino-usbserial/Arduino-usbserial.c#L234), a reset is triggered for the Atmega328 on the right.

[Another design](http://arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf) was achieving the same thing using the `DTR` and `RTS` lines of the FTDI component (left) to trigger a reset on the Atmega328 (left).

To avoid this behavior, a 10μF capacitor between Reset and Ground is enough, but you can also cut the RESET-EN trace to prevent the auto reset permanently.

On the software side, as @sachleen says in his answer, you can control the reset behavior using whether you trigger or not the DTR line.

That thing does *not* happen with the Arduino [leonardo](http://arduino.cc/en/uploads/Main/arduino-leonardo-schematic_3b.pdf) and [Micro](http://arduino.cc/en/uploads/Main/arduino-micro-schematic.pdf), with the firmware [Caterina](https://github.com/arduino/Arduino/blob/master/hardware/arduino/bootloaders/caterina/Caterina.h) does act on the `DTR` line, but on whether you open a connection at 1200bps. That's because both arduinos have an AVR microcontroller that can directly "talk" on USB. There's actually a topic about [how to trigger a reset](http://arduino.cc/en/Guide/ArduinoLeonardoMicro?from=Guide.ArduinoLeonardo#toc4).