Numerous solutions could've been thought up (CGNAT the entirety of IPv6 as a source behind a part of the IPv4 space and allocate a part of the IPv6 region for "legacy" IPv4 addresses for example; that way you have 6->4 backwards compatibility), but none were tried. The result is a great technology in a vacuum, forever hampered in adoption rate because it's not compatible with old sites and there's no incentive for old site operators to switch.
Shaming bad actors doesn't do anything because IPv4 vs IPv6 is largely nerd shit in terms of computer issues; your average internet user is behind CGNAT already for IPv4 so address exhaustion means nothing to them so they don't care about it.