The reason for making a separate class for ordered monoids is that monoid rings can be implemented more efficiently for them - an element of the monoid ring can be stored as a sorted list, each element of which is a pair consisting of an element of the monoid and a coefficient. See PolynomialRing.
A free commutative ordered monoid can be created with monoid.
The object OrderedMonoid is a type, with ancestor classes Monoid < Type < MutableHashTable < HashTable < Thing.