I think it's so good partly because I had come up with a similar explanation ;-) but it turns out that my explanation for a Monad was actually more correctly the explanation for a Functor :-(
I might tweak it slightly: Explain that a Monad really is an algebraic monad, and that it really needs to be that, not just because that's what the function signatures wind up being, but because Haskell is, under the hood, expecting it to satisfy the monad identities. (Or do I have that wrong?)
I do mention that instances of the Monad typeclass have to follow certain laws to make sure that they are "meaningful and useful"...I handwaved the actual laws away in the ambiguous interpretations of 'meaningful and useful' :) I made the choice that going into what that really meant would be beyond the scope of the article...but thanks for the comment :)