any ideas on what's causing this?
The process of filling bins is slow. If there is no unfilled bin on the stockpile, then a dwarf will haul an empty bin to the stockpile, then a dwarf walks around to collect 10 metal bars and hauls them to the bin, then those two jobs are repeated
(these jobs can be seen in the Jobs menu). This means that there is only one dwarf assigned to filling the stockpile bins at any time. If you also factor in the weight of the bars slowing the dwarf, as well as the travel time for the dwarf to get from the meeting area to the smelter. It can take months for a 10x10 stockpile to fill up with full bins. It may be that your stockpile is just filling slowly.
If your metalcrafters are using metal bars from the bins while they are being refilled, it will be even slower.I tend to avoid using stockpiles or QSP for metal bars that I plan to use soon. The smelters and forges are always close together; and the metal bars accumulate in the smelter until a metal crafter walks over to take them.
When there is a large surplus of metal bars or charcoal that I know will not be used for a long times (if at all), then I will make a binned stockpile only for that metal, allow it to fill up, then remove the stockpile, leaving the full bins to collect dust. My smelters are always cluttered.
The bin (and barrel) usage logic is to allocate new storage containers only when the old ones get full, so a new one is only hauled to the stockpile when the previous one is filled, and it's possible to get container hauling blocked because there is no free space in the stockpile (I think moving things from the stockpile into its containers is lower priority than hauling to the stockpile.
There is no blocking of the container hauling; the jobs are just either lower priority or are queued on a slower schedule. You will see many dwarfs hauling individual items and then an empty bin will be placed on top of one of those individual items. I've seen stockpiles with a bin on every square and individual items on most squares.