filter_has_var() non testa ad esempio la versione corrente dell'array $_POST, ma solo la versione arrivatagli dal form, invece isset() controlla l'array così com'è al momento.

Da un lato questo sembra rendere filter_has_var() più veloce, ma direi solo di un fottilionesimo di secondo visto che difficilmente tramite post si invieranno migliaia di dati, quindi praticamente non si guadagna niente.
Dall'altro lato, se in qualche modo modifichi l'array $_POST, isset() se ne accorge, filter_has_var() invece no.