They also generate the same SQL code.
In some cases, there was a discussion about the possibility of generating another SQL-code, but nothing was found.
The differences are how they can help you in different cases, but only at the code level:
createQueryrequires JPQL / HQL. Any changes to the column name idor object name will affect the query string. The method finddoes not suffer from the same problem.createQuery (Query class, call setParameter method, String ..) .