Personally, I don't favor automatic creation of accessors (or mutators) at runtime.
I have this creation wrapped in BEGIN blocks, and have always been able to subclass them. Not that it matters much, because a module is run completely when it is used (how else can its return value be evaluated?). Inheritance itself is a run-time thing, so I can't see how it can break. Note that I'm not using AUTOLOAD here.