I've seen this with the fuser command, and I believe the developer understands that stdout is very commonly piped to other commands, so the type of output that other commands can parse and use is sent via stdout, while the type of output that's useful only when viewed by human beings is sent via stderr.
Fuser intermixes its output a lot. It alternates between stdout and stderr - the filename and a colon to stderr, a space and multiple pid digits to stdout, a single suffix letter to stderr, and back to stdout for the next pid's space and digits. The spaces and pid digits are useful for piping to grep, awk, sed, etc., but the filename at the start of the line and the letter suffixes are not. However, for the human being who is letting the output go to his/her terminal window, all the info is useful.
The output of dumpe2fs is probably the same way. The stuff that's easy to parse with grep/awk/sed/etc is written to stdout, while the stuff you don't want to bother parsing (the version string) is written to stderr.
I don't know the developers of either of these programs, so I can't speak with any authority. But this is what I think the reason is.
sometool --help. Well, I suppose it's not like the normal output of the tool, but always meant for the user, similarly to actual error messages. But it makes it a bit annoying to try to grep a longer output for a particular option... GNU tools seem to print help texts to stdout, so it can go both ways.dumpe2fsalways show its version?”, and that can only be answered by its authors. Ted Ts’o at least does frequent this site, so that’s not impossible (and someone could just ask directly).