Когда List<Image> unionList = new ArrayList<Image>();
исключено, создается пустой arrayList.
Когда unionList.addAll(fromImageList);
исключено, все изображения из fromImageList добавляются в unionList.
Когда unionList.addAll(fromTagList);
исключено, все изображения из fromTagList добавляются в unionList.
ArrayList не предотвращает дублирование. Если вы хотите предотвратить дублирование, вы должны использовать реализацию Set, например, HashSet.
Вы можете сделать следующее
Set<Image> uniqueImages = new HashSet<>();
uniqueImages.addAll(fromImageList);
uniqueImages.addAll(fromTagList);
List<Image> unionList = new ArrayList<>(uniqueImages)