100% this. Cofree Maybe is a a nicely general encoding of a non-empty list that shows how closely related it is to a rose tree Cofree []. It'd lose its ability to be folded if Maybe ceased to be Foldable.
When I'm showing how the cofree comonad works, I often take time to work up those examples along with Cofree ((->) e) as an (infinite) Moore machine. About 3-4 examples in, it usually clicks.
instances on Either e, and Maybe, Identity, (,) e, etc. are all building blocks that are commonly used for larger things like this.
As you enumerate all the simple functors we have lying around in Haskell, looking at what they do when you compute `Cofree f` or `Free f` tends to be quite informative.
This teaching approach breaks down completely once you start cutting arbitrary holes in instance coverage and making everyone remember where those holes are.
-Edward