Das ist ein wenig tricky, denn das "serialEventRun" ist keine Variable, sondern die Funktion selbst :-)
Der Trick liegt in der HardwareSerial.h:
extern void serialEventRun(void) __attribute__((weak));
Die Funktion "serialEventRun" wird als "weak"-Symbol deklariert. Damit kann dieses Symbol von anderen Definitionen überschrieben werden, aber auch "0" sein, wenn es keine Definition für dieses Symbol gibt.
Das
if (serialEventRun) serialEventRun();
bedeutet also im Grunde: Wenn es eine implementierte Funktion "serialEventRun" gibt, dann führe sie aus. Wenn nicht, dann nicht.
Die Erklärung warum das gemacht wird, findet sich in der HardwareSerial.cpp:
// this next line disables the entire HardwareSerial.cpp,
// this is so I can support Attiny series and any other chip without a uart
#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H)
Wenn also ein Chip verwendet wird, der kein UART kann, gibts auch keine implementierte "serialEventRun" Funktion. Dann würde der Compiler aber meckern, weil es die Funktion nicht gibt, da sie ja in der main.cpp drin steht.
Das Gleiche wird übrigens auch mit der Funktion "serialEvent()" gemacht. Die wird in der HardwareSerial.cpp auch als "weak"-Symbol definiert und dort zusätzlich als "leere"-Funktion angelegt. Damit kann man die Funktion trotzdem durch eine eigene im Sketch überschreiben und es gibt keine Compilerfehler das eine Funktion doppelt definiert wurde.
Sehr geschickt, wenn auch etwas verwirrend

Mario.
Edit: Hier noch ein Beispiel dafür:
http://en.wikipedia.org/wiki/Weak_symbol