I think the bigger problem is in sensor precision, particularly those sensors responsible for reporting what state the arm in (i.e. so the computers onboard can calculate the position of the arm relative to the object it needs to pick up). Sensors with low tolerances are extremely expensive and those particular robot manufacturers may have opted for less accurate sensors to save on costs. They may work perfectly fine for moving things like doors and frames; but the differences make themselves known as soon as you try to interact with bolts and etc.
When I did robotics we had a perfectly capable Linux box running PID loops several hundred times a second; but our robot still sucked b/c our on board motion sensors were simply not precise enough to give us accurate data to feed the algorithms. As usual, it's all about the data.