Should max()/maxBy()/maxWith() return the last largest element?

No, I’m saying you might not know what the order of the collection was (in the case of an API), but still want to keep the order in which you received the collection when you encounter two elements with the same max value.

You might also know the order and not want to redundantly redo the order by using another comparator when you could just use one function.

I think the main idea, it’s if min stands for β€˜<’ then max should stand for β€˜>=’. As min and max are opposite functions. This may be important when the comparison function is partial order. Maybe a less impacting change is to add something like minOrEquals() (or lastMin()) and maxOrEquals() (or lastMax()) to the standard library.
Such as : min() and maxOrEquals() are complementary functions and minOrEquals() and max() are also complementary.