I can't speak for Paul, but my thoughts are that I would rather have it fail completely on an ambiguous format that just silently guess and go on processing as if that guess were correct. If and when that happens, you contact someone in charge of the source of that data, and ask them to pick one format to stick to, and let you know what it is. And do it over email, not on the phone. That way, you get correct behavior from then on, and your backside is covered in case something changes.
But you know your environment, requirements, constraints, and use cases better than anyone here, so it of course has to be your call.
I think, i will write my program in such a way that it returns a Custom Object. It will contain a list of formats for which validation was successful. A flag in case validation was successful for more than 1 formats.
Will leave it on the program caller's decision to handle specifically.
Your loop can be a bit more efficient:
1) you can reuse and modify one single SimpleDateFormat object.
2) you can prevent the ParseException using the often overlooked other parse method, that takes a ParsePosition.