ちょっと何言ってるかわからないですね…
Set a のaがOrdを想定していることはMonoidと何の関係もないし、aがOrdでないようなSet aはemptyとsingleton以外には基本的に構築できないし、当然すべきでもない
型チェックをパスするfmapを定義することは、自明で無意味なもの(fmap _ _ = empty とか)を除いて不可能