Во втором варианте вы теперь вместо F можете поставить любой тип, для которого есть Monad, можете даже свой тип придумать и реализовать для него. А какое различие вы хотели ув...
Если я напишу пустой trait Some[A] {} - это тоже будет функтором? Вам пытаются донести, что функтором это будет только при наличии операций и законов
А как это вообще использовать? Получается, что взяв Option, во flatMap я могу запихнуть все что угодно, что реализует Monad
Из-за переполнений будут нарушать? Или почему?