I have used both "roll-my-own" and Module::Pluggable with success. It really depends on what I was trying to do.
That said, I would probably be more inclined to go with M::P now since it offers more flexibility overall, even if not needed at the time. The use-cases I had involved finding what plugins were available so I could process a given input format with a given plugin, converting to an internal virtual format if it existed or bailing out otherwise.
Some of what I was doing could possibly be done using API Roles in Moose, instead.
It helps to remember that the primary goal is to drain the swamp even when you are hip-deep in alligators.