Perchè guardando il manuale "linkatomi" da satifal, da quanto ho capito la differenza più imp è:
filter_has_var()-->controlla se la variabile del tipo specificato esiste
isset()-->se la variabile è settata cioè se essa è NULL o no.

Sbaglio o sono due cose differenti? cioè nel primo caso posso controllare se la variabile non è proprio stata inviata