I've actually got a lot of suggestions, Hopefully I will cut them up sufficiently.
In my experience, piles are separated into three types
Input Piles: Are designed to take the output from buildings and store it until something can be done with it. Basically you want an Input pile by every workshop so that your producer dwarf doesn't have to walk far to put it down, and the workshop doesn't become cluttered. This pile needs to be emptied regularly, because you always want free space, but you don't need anything in it.
Storage Piles: Are designed for long term storage of items like excess stone and furniture. You don't care if there is anything in it or not.
Output Piles: Are designed for distribution. They are the sources of material for workshops as well as the food bin in the corner of every dining hall. You actively want the Output pile to be filled with items in order to minimize travel times.
-----------------------------------------
That's the three kinds of piles I've built, seen on the forums, or seen on the wiki. My suggestion? Implement these pile types in code. Input piles would be used by dwarves carrying items they don't want. (items they don't have hauling turned on for, for instance) Output piles would actively fill from storage or Input piles without you having to manually set up a switchover. Input piles being filled would naturally lower their priority the closer to filled they are, aiding your hauler dwarves in prioritization. What would happen is an emergent AI system for managing your piles, based purely on telling the system what you want to do.
Here are a few behaviors that would be possible with just that switch:
Garbagemen and trashcans. Turn off refuse hauling for all but a few, and put small one unit refuse Input piles around. People will throw out the garbage, and the garbagedwarves will pick it up and haul it where it needs to be.
Waitors. The cook makes food and places it in his Input pile. The waitors will haul the food around to the various dining rooms, ensuring that each dining room always has a small stock of food and drink.
Furniture Warehouse. Masons build beds and place them in the input pile right outside the door. Haulers take them to the large warehouse. Months later, you decide to build an apartment expansion. In the hall outside, you place an output pile for beds. When the expansion is complete, the furniture is already queued up outside waiting to be moved in.
I think the beauty of this particular system is that it doesn't involve tedious tweaking of routes, or designating this pile be moved to that pile. It handles both the output of a workshop and the input in one simple step.
Thoughts?