Y'know, there was more than just ballistas and catapults, back in day. Sure, they were the core of the seige engine force, but even then, they could throw more than rocks. I have a few suggestions for different types of siege engine and munition.
Siege engines:
Trebuchet
Can throw multiple items at once, but takes slower to reload. the advantage it'd have over a catapult is that it can take out larger numbers of enemies, at the price of giving more chance for the enemies to catch up and scare the bejeesus out of the operators.
Battering ram
Deals massive damage to anything in front of it and capable of destroying constructions, but can only deal damage one space in front of it. Can be pushed in the direction it's facing with a certain job. (This is more likely to be used as an attacking mechanism.
Dwarven Hwacha
Following in the vein of the Korean Hwacha, This is a devastating seige engine that fires a huge storm of arrows, sure to devastate anything in its path- at the cost of being really, really slow to reload and taking up a lot of resources. Requires saltpeter to work. While it's pretty out of the question that dwarves have gunpowder, It's quite possible that they invented rudimentary explosives- The far east did it, why can't the dwarves?
Types of ammunition:
Tar ball (Or other suitable equivalent): A thing that the dwarves light on fire and fire at the enemy. It would splatter all over the place and cause a localized fire and set fire to anybody unluck enough to be caught in the blast radius. (But considering how the AI reacts to fire, it might end up being more devastating to you than them...)
Shot bag: Something that splits apart midair and hits a lot of enemies. To compensate for the potential devastation, it should go a shorter distance than normal rocks.
Corpses, chunks, skulls, or other body parts: Why not? If a goblin corpse or skull flew down out of the sky and I was a goblin, I'd shit myself and run. Corpes of their own kind could demoralize enemies, and corpses of any intelligent being or fearsome animal could freak them out to a lesser extent. They obviously wouldn't be amused if you threw kittens at them, but even then, once disease goes in this could be a devastating long-term weapon.
Prisoners: The only thing more terrifying than a corpse of your own kind flying through the air is a live person of your own kind flying through the air, screaming, and splattering on the ground. Provides an amusing way to get rid of your goblin prisoners and train your siege operators at the same time! Also, should you use a suitably fearsome beast as the ammunition, It might even survive the fall and start wreaking havoc on the guys you launched it at...
(Warning: Do not try this with megabeasts or clowns, or whatever you just launched might end up very pissed and come after you after they annihilate your enemies for you...)
Anything else you can think of: Why not? Launch sand at your enemy and watch them die of a thousand tiny puncture wounds! Launch clothes at them and watch the hilarious lemming rush to collect the "Misplaced" clothing! Launch bothersome nobles and make them useful as ammunition! The sky's the limit!