Was mir hier noch fehlt, die Betrachtung deines Konstrukts if (isset($a = $b). Unabhängig von Sinn und Syntax.
Hier wird zuerst (!!!) die Zuweisung gemacht, danach erfolgt die Prüfung ob ein existierender Wert zugewiesen wurde. In deinem ersten Beispiel prüfst du zuerst ob $b gesetzt ist und weist dann das an $a zu.
Diese beiden Verhalten sind also etwas fundamental anderes.