I tend to create variables and 'throw-away' functions only while debugging or teaching. In a known working production script I tend to inline, pipeline, and every other trick I can use to not create variables...
In my opinion it seems to lower the amount of RAM a script needs if you minimize storing any results of an action UNLESS you intend to repeatedly reuse something.
for instance generally I pipeline and allow auto garbage collection on as much as possible, but if I intent to execute multiple concepts against some object, I prefer creating a variable and storing the object there first.
(a case would be something like an exchange mailbox object if I intend to execute several command against it, rather than constantly using "get-mailbox", which each time it runs actually gets the mailbox object, again.)
so rule of thumb, if you intend to reuse, create your function, store results, etc. otherwise, go crazy with pipelines, inline, tricks, as much as possible [so long as its readable later, and you have a clue what you did
]
Aaron