Es mas que nada para que tu codigo quede mas seguro
Esos cast forzosos son un peligro, y deberian evitarse a menos que sea como ultimo recurso; este no es el caso.
Otra cosa muy peligrosa es el operador '@', el principal problema que tiene es que de esa forma el compilador se pasa por encima el checkeo de tipos (todo vale) y te estas perdiendo una de las grandes ventajas de un lenguaje compilado, que detecta estos errores y te ahorran problemas al momento de correr tu aplicacion
Fijate que estas casteando la direccion de memoria de tu parametro a un puntero a TObject y luego accediendo al TObject referenciado por el puntero. Es como demasiado "hardcore"