I've recently started reading a book about Roman generals and breaching into a city seemed a real problem (I'm thinking Numancia, Alesia, Cartago Nova, etc). If defenses were such a problem why didn't they destroy them with siege engines? Specially in cases where diplomacy failed several times why did they choose to starve the enemy out instead of just destroying the city from the outside?
Siege engines were expensive in terms of expertise to design, materials to gather for construction and (for some types) ammunition, time to build, and men to operate. They were also difficult to move and ranges were limited. This interview with Peter Vemming discusses his work recreating a 22-ton trebuchet that was expected at the time to have a range of about 300m (about 328 yards). His was not the first attempt to recreate a medieval trebuchet, either, suggesting that despite our knowledge, authentic trebuchets required a great deal of knowledge to build properly.
On the topic of the range, a siege engine in the wrong place might be targeted by archers either trying to pick off crew or to damage or destroy the siege engine. CJ Longman wrote in 1894 of attempts to replicate claims of longbow ranges above 300 yards, and while he never quite reached it, he opined that a trained longbowman could probably reach 350 yards. Add in a little more distance due to shooting from a height (either a wall or a tower) and the range of the trebuchet suddenly becomes a potential problem.