Should you need a custom logging class for your managed package?
Generally speaking, no. Some ISVs do decide to do this to avoid the complications of subscriber logging (you have to submit a case, etc), and the default Apex Error Notification system tends to work well enough, but if you feel it's inadequate, you certainly could build your own.
I'm aware that you can use subscriber support but is there any benefit of using custom logging?
If the built-in notification system and subscriber logging features just doesn't cut it, you might benefit from custom logging. I haven't run in to a situation where the out-of-the-box features couldn't handle it, but on the other hand, I've only been an employee at one ISV, so it's an underwhelming sample size. I hope that someone will edit/add info about a specific situation that's hard to debug using only the standard tools.
If you do implement a custom logger, what is the visibility on the Logger custom object?
It's whatever the admin wants it to be. There's no way to restrict visibility of an object once installed, except for Custom Settings, so these logs could potentially be visible to everyone in the org.
Since the custom object would consist of application specific logs, can you limit access to the data (error messages) in the Logger custom object in the subscriber org?
No, but if you really wanted to, you could ship or generate a private encryption key protected by some mechanism, so that even if the users can view the records, all they will see is encrypted "junk" that they can't view. This would make use of the standard Crypto class. If you need to have "secret" data, you can use encryption.
Overall, the default logging is protected, and fairly easy to use. There is rarely any design that would benefit from custom logging.