Well, I think there is no definite answer which option is better.
I personally would prefer to not use an attribute to share the module among all scriptable tasks but instead to use a variable locally within each scriptable task. In my opinion, the latter leads to more readable code, and you are not forced to think what the attribute value is set to, to bind it as in parameter, to make sure that it is not bound as out parameter, etc. One exception could be for some really generic modules; eg. for logging or some other often used utility methods.
But other people may have different opinion, so maybe you should try both approaches and choose whatever you feel more comfortable with.