(1) dispatches to base R. (2) dispatches to GForce grouping.
(You can pass verbose=TRUE to queries to get more insight.)
GForce was changed here (a1b1c08) but I don't see any notes in NEWS or any tests added.
R's min treats ordered factors and non-ordered factors differently, as you nicely showed.
> x = factor(letters)
Error in Summary.factor(1:26, na.rm = FALSE) :
‘min’ not meaningful for factors
> x = factor(letters, ordered=TRUE)
26 Levels: a < b < c < d < e < f < g < h < i < j < k < l < m < n < o < ... < z
Yes I guess we should be in line with base R in this regard. Thanks for highlighting.