And if so, under what circumstances?
Javadoc and JPA spec says nothing.
If you take a close look at the org.hibernate.loader.Loader (4.1) you will see that the list is always initialized inside the processResultSet() method (doc, source).
protected List processResultSet(...) throws SQLException {
final List results = new ArrayList();
handleEmptyCollections( queryParameters.getCollectionKeys(), rs, session );
...
return results;
}
So I don't think it will return null now.