Si, per avere il polimorfismo i prototipi di funzione padre e figlia devono essere identici.
Ma in che misura un virtual void si lascia modificare?
Totalmente. La funzione polimorfica figlia può essere vuota, aggiungere codice, resettarti la macchina. Dipende da cosa ci scrivi dentro. C'è totale libertà.
Ma in tal caso allora perché non bastava scrivere solo BeginPlay(); senza il Super?
Senza il Super, BeginPlay() richiamerebbe se stessa ricorsivamente. Specificando Super indichi che vuoi richiamare la funzione padre eliminando il momentaneamente il polimorfismo della funzione.