Say you have an Entity Parent and it has a collection of Children. Without using an indexed column on a list, Hibernate will use "Bag Semantics" for handling the collection of children. This means that the collection is unordered, and can contain duplicates. If you watch your SQL log when delete a child, you will see a delete statement deleting all children. Followed by # of children - 1 inserts that re-inserts all of the undeleted children. Why not just a single delete statement?
See this link for a full explanation (http://assarconsulting.blogspot.com/2009/08/why-hibernate-does-delete-all-then-re.html).
Clearly, it would be more efficient for a single delete statement, right? In most cases, we actually want a Set, as our entities are typically unique. However, a lot of developers still use List (out of habit). By default, for a list without an indexed column, hibernate will use Bag Semantics, giving the worse performance.