I've heard more than one person argue against automatically generated encoders/decoders since it's easy to accidentally introduce breaking changes to your API by renaming a record field / class method.
If that's your view then Elm's approach is a plus for the language since it eliminates a potential pitfall.