I like both of these approaches better than the Scala approach to binary compatibility, which is to munge a version into the artifact ID. That feels very broken to me, but unfortunately that is their standard now.
I have heard of complaints that using classifiers to specify bytecode level can cause dependency resolution issues, but that sounds like a problem that needs to be exposed and solved, not worked around. The POM reference highlights using classifiers for bytecode versioning explicitly: https://maven.apache.org/pom.html#dependencies (I wish this page had an anchor for the classifier section).