While it’s convenient, the Decoder isn’t recommended for those use cases precisely because of the edge cases around readers that don’t contain at most one JSON document with no suffixes.
The standard library maintainers recognized this as a problem that there was no “better,” more convenient way to do it and in encoding/json/v2 they have UnmarshalRead for that use case: https://pkg.go.dev/encoding/json/v2#UnmarshalRead
We switched to Decoder due to allocations after profiling - we were using the Decoders/Encoders in a pipeline.
Don't believe there was a more convenient way to achieve the same without writing our own Decoders/Encoders.