a.getPurchases () дает вам набор, и ваш компаратор сравнивает элементы набора, а не наборы.
Исходя из вашего ожидаемого результата, я понимаю, что вы хотите получить набор с последней датой покупки.Если каждый набор содержит только покупки с одинаковыми датами покупки, вы можете создать свой компаратор следующим образом:
.sorted(Comparator.comparing(purchases -> purchases.iterator().next(), (p1, p2) -> -p1.compareTo(p2)));
Если даты покупки отличаются внутри набора, вам нужно получить максимальную (или минимальную) дату покупки внутри набора,затем сравните это между наборами, что-то вроде:
final Stream<Set<Purchase>> sorted = acquisitions.stream()
.map(Acquisition::getPurchases)
.sorted(Comparator.comparing(purchases ->
Collections.max(purchases, Comparator.comparing(Purchase::getPurchaseDate)).getPurchaseDate(),
(date1, date2) -> -date1.compareTo(date2)));