Compiler crashes with "Run time error, rule 'matchListsOfATypes' in module 'overloading' does not match"

This happens with the following program:

import StdEnv, Data.Maybe, Control.Monad

f :: Maybe (Maybe a)
f = return Nothing >>= return

Start = ()

This equivalent definition does compile:

import StdEnv, Data.Maybe, Control.Monad

f :: Maybe (Maybe a)
f = return Nothing >>= \x -> return x

Start = ()