If you're running a node optimized to speed up network wide block propagation, it might make sense to limit the number of Knots peers you accept, even today. Blocking them entirely would come with some theoretical forking risk though it would only be a concern if practically everyone did it, which seems unlikely to say the least. But if you want to behave more safely, limiting yourself to one or two at most would eliminate even that risk (well, up until the point they fork themselves) without wasting as much resources at the critical time of new block discovery.
That seems extremely unlikely at this point of time. I haven't checked this data myself but I have plenty of connections to Bitcoin Knots nodes last time I checked so this does have a big impact on me. It was around 15% or something if I remember correctly, and since I have hundreds of connections this is a big drain on the resources.
I don't think there are many such nodes, as blocksonly mode undermines privacy by making them detectable among other nodes, because if they broadcast their own transactions, the origin becomes obvious.
I think few people intentionally enable it to furthermore reduce bandwidth usage.
You can just submit the transactions through a third party location/service while obfuscating yourself whether through VPNs or TOR, the issue of "privacy" is easily solved -- nobody is going to look any deeper into it usually. It is a great mode that has a very good purpose as you have mentioned, some users need it.
It would explain a good portion of the difference in bandwidth usage if they are blocking all of those transactions.
The answer is already YES. I would like to block them on my node, I don't need these useless leeches taking this precious bandwidth. Has anyone provided the most straight forward way to block all or most of them to the public?