Normally it is better when objects are not reused in different roles.
When we want to reuse object (for example in two roles) then it may
make it dim and hard to follow (for rest of the program, for reader
of code, for person debugging it) in what role it is. Additionally we
must be sure that need for first role is always over by the time we
use object for second role. If the roles are unrelated then that
is lucky coincidence and may change and cause incorrect results.
Reusing objects may give performance advantage because of reduced
amount of allocations and deallocations. If that benefit is measurable
then managing a whole pool (recycling center) of such objects typically
gives even more notable advantage than reusing single objects here
or there.