By convention, context.temp_allocator is intended to be cleared regularly (most commonly every frame of any kind of graphical application, but you could imagine every timestep of a simulation, etc.). So don't use it because it's growing, use it when you don't need to hang on to an allocation for very long.
My rule of thumb (and standard in the packages thaht come with Odin) is that any data returned by a procedure must be allocated (if required) in an allocator specified by the procedure's caller. But data that is only used internal to the procedure, it is up to the procedure to decide, and context.temp_allocator is pretty common.