Looking at the list of reasons why a recruiter might be "bad" some of the blame is on recruiting company structure, but another major source of blame is on employers.
They sign contracts with recruiting firms, give little to no oversight, and provide a limited set of information about the role/responsibilities/comp/etc. At the same time, a lot of employers are really bad when it comes to retention. This combination leads to recruiters/recruiting companies that get away with bad behavior and still make a lot of money since it's purely a numbers game and they find that subset of engineers willing to tolerate their behavior. And companies pay them large fees for each transaction.
Protip: If you want to get rid of a lot of recruiter contacts, deactivate your LinkedIn. And make sure your public commits on Github don't include your real e-mail.