Amazon isn't helping anything by their "just in time" delivery model. If there is a truck going out that will allow 8-hour delivery, they will deprioritize the package for 40 hours and then mail it out on that truck.
In turn, that leaves Fedex and UPS absolutely no margin for error. Package shipping errors happen, especially in the weeks before christmas when volume goes through the roof. But Amazon has wasted all the safety margin so if even one error occurs they blow their delivery window.
It's hard to say whether UPS/Fedex have a problem without looking at their metrics, but Amazon sure isn't helping by pushing everything to the bleeding edge. Anecdotally over the last year or so I have noticed an increase to the point where virtually all (let's say at least 75%) of my "2 day delivery" (or even amazon day/no-rush) packages are being shipped like 11 at night on day before delivery and they just beeline it to me same-day.