It's not always because their reputation is bad. Sometimes they have a really bad employee that they want to replace, but who will definitely know if their job is posted. This happens a lot at the executive level.
And a lot of recruiting companies are afraid you'll bypass them and go apply directly, thus cutting out the middle man and they're not allowed to send out goons to break your kneecaps.
I can understand not wanting discrimination on employees, but we really ought to be allowed to google businesses before spending our time applying. Some of them are blatant scams!