The main difference between JPA getResultList() (and its Hibernate implementation) and the conversion of Object[] returned by JDBC into a List by your own code is memory management.
When doing the conversion after getting all objects from JDBC, you know the size of the Array to allocate… while Hibernate Loader class does a
final List results = new ArrayList();
...
// loop on results...
results.add( result );
...
which is of course much less efficient.