OK, then why aren't the developers pushing for these solutions?
Because writing good code is hard, because it takes time, and because people are more interested in improving regular transactions, than they are in developing tools for JPEG users. Bitcoin is about sending money from one address to another. Even if it is technically possible to send money and commit to some JPEG, without making your transaction bigger, then many developers are not interested in developing such things. Also because spammers are going to use the worst ways anyway, and won't switch to better solutions, because their goal is not to handle JPEGs, but to spam the network.
Also, in the Open Source world, people develop things, which they are interested in. You cannot force a developer to make tools they don't want to make. And many of them simply don't care, because as long as people are focused on JPEGs, they don't try much worse attacks, and other changes can be made peacefully and quietly, as long as nobody is looking at it.
Or is the real motive is actually to enable "features" on-chain to encourage more on-chain activity, such as dick pics and fart sounds, to "fabricate" more demand for block space and make it more sustainable for miners to be incentivized for securing the network?
No, it is much simpler than that: each soft-fork takes a lot of time and effort to deploy. When Taproot was introduced, some limits were lifted, to make it possible to deploy some future protocols, without making yet another soft-fork. Many developers assumed, that abusing some limits is hard enough, that nobody will write the code, which will do that.
And quite often, it is the case. If Casey Rodarmor wouldn't share Ordinals, then we wouldn't have so much on-chain spam. If Garlo Nicon wouldn't deploy CPU miners for testnet, the minimal difficulty rule could be left unmodified, if only devs would mine single CPU blocks from time to time. There are many skilled people, who shared some code, and made it possible to abuse the network, because their code changes didn't have any protections from being abused.
And here, it is a similar thing: the maximum size of the block is the only thing, which protects us from seeing how Bitcoin is turned into Bloatcoin. And as long as regular transactions can still be confirmed, and existing nodes can handle all of that, nobody cares enough. Many code changes are driven by anger: if things stop working, then developers are focused on fixing the problem, because then, it is the only way to make the system usable again. But as long as it is not the case, then people can peacefully work on more exciting problems than JPEGs, because the world is not burning yet.