Is it safe to assume recycled creeps’ materials will be automatically picked up if they’re recycled on top of a container?
Yes, it should work this way.
Also does the spawn have to be inactive?
If you mean not busy with spawning, then no, it can be busy while recycling in the same time. But it should be an active structure, i.e..isActive() === true.
And finally, can this be a room-wide ability? Having to stand the creep next to a spawn and send another one to pick up the decaying resources will be hassle, it’d be nicer if they could be recycled next to the storage and easily tossed in.
All spawn methods work in close range only.