Wo ist der Unterschied ?
If(!$xy)...
^^^^^^^^ Hier fragst du ob die Variable vorhanden ist.
if(empty($xy)....
^^^^^^^^^^^^^ Und hier ob das Array Werte enthält.
Wobei '' auch ein Wert ist.
erst wenn du z.B. unset($xy[4]) ausführst, dann ist der Wert an Position 4 wirklich nicht mehr vorhanden. Ob das ganze Array dann auch leer ist ist eine andere Frage.