Do external battery packs need to connect to ground on the arduino?
Ground is merely a label. It is a logical point in the circuit relative to which you measure all other voltages against.

For instance the 5V pin on the Arduino is actually 5V relative to the ground pin.

A 12V battery's + terminal is 12V relative to the - terminal. In this situation the - pin can be labelled Ground.

Electricity only ever flows when there is a circuit.  That is, current can only flow when it has some way of flowing back to where it came from.

A battery with an LED and resistor attached has a circuit: Battery -> LED -> Resistor -> Battery.  An Arduino itself is a circuit: Power -> Arduino -> Internal Gubbins -> Power

By the rule above, electricity can only ever flow out of an I/O pin if it has some way of getting back to where it came from. That route back is the Ground pin of the Arduino.  Interfacing some external device with the Arduino, whether it has its own power supply or not, requires that connection back to the Arduino's ground in order for the signal you send from the Arduino to have a complete circuit.