Wenn man die Sache ganz fundamentalistisch und kontextfrei betrachtet, hast Du natürlich recht. Wenn $p vorher schon einen relevanten Wert enthielte, der im Falle eines fehlenden $_GET['p'] beibehalten werden muss, würde die if (!isset($p=$_GET['p'])` diesen Wert verlieren.
Da es hier aber eher danach aussieht, einen Default für einen nicht übergebenen Parameter zu finden, ist der Unterschied irrelevant.
Rolf