One edge case that requires a private method to be final is when the SafeVarargs annotation is used. The following code does not compile, because the private method is not final.
@SafeVarargs
private void method(List... stringLists) {
//TODO a safe varargs operation
}