Always limit the scope of variables, thus passing in required parameters on the fly should be the default way.
Except, of course, the caller has no parameter access, values are needed across multiple methods or a reasonable component structure is built for a reason.
The more places you store objects, the more messy und unmaintainable the overall object structure gets. In case of cyclic references, memory leaks could be the effect as well.
Will go ahead and give my opinion of the benefit of passing rather than storing, I usually have a lot of fields but try my best to use methods and passing parameters.
From what I have read, due to modern hardware method calling is practically free in terms of performance, as is passing instances of variables.
Just remember if you are passing an object it gets passed as is, if you pass primitive data (int, float etc etc) it passes a copy not the actual variable. That is where the wonderfulness of OO comes in
So passing an int to a method and changing it, won't change the actualy field, only the passed variable.
Anyway, I use a lot of fields but try to use methods to alter fields and pass values/objects, it makes it more maintainable as well.