Why use a series resistor between Arduino RX and ESP8266 TX?

My guess is this is to protect the pins by limiting current. That shouldn't happen during normal serial communication, but imagine if you didn't have the resistor and someone uploaded some code that did something like this to the Arduino:

pinMode(0, OUTPUT);
digitalWrite(0, LOW);

Now everytime the Tx pin on the ESP8266 goes HIGH, that's a short which will cause the current on those pins to exceed the absolute maximum and possible damage the microcontrollers. With the resistor, the current should be limited to a safe level.