The primary reason is freight train interference.
This is caused by bad dispatching (which is not legal) by scofflaw Class I railroads.
And the secondary reason is slow orders. This is caused by undermaintenance by the Class I railroads. (Which is legal.)
The LD trains have actually had much much better on time performance lately. This is largely because there's been a downturn in freight traffic; with less freight traffic, the Class Is are less tempted to illegally dispatch their freights ahead of Amtrak.
A tertiary reason is construction projects, which affected the Empire Builder for several years. And then there are actual, inherent sources of delay. There are situations where there's a bottleneck where no amount of competent dispatching or maintenance can make the trains run on time, and more tracks need to be built, or a grade separation needs to be built, or something. The most significant such point is in the approach to Chicago from the East. Or there's the situation between Everett and Seattle on the Empire Builder, where recurrent mudslides shut the line down, and something has to be done about them to improve OTP.
With dispatching, it is very much a matter of *management attitude*.
On the whole, BNSF has been very cooperative, though they can be quite recalcitrant when it comes to single-track lines (which is understandable).
For decades, UP was extremely obnoxious, but they've been quite cooperative lately. Someone must have changed jobs!
NS is usually extremely cooperative, but did something exceptionally stupid in fall of 2014 (ordering their dispatchers to obey an incompetent automated computer system) and took months to admit they'd screwed up.
CN has been extremely uncooperative to the point of criminality, though this seems to have changed somewhat since Hunter Harrison left.
CP used to be quite bad about dispatching, but oddly has gotten quite a lot better lately, even though they acquired Hunter Harrison.
CSX has been consistently uncooperative and obnoxious, and it has nothing to do with how much they're paid; they're just jerks about it no matter how much they're paid. Not clear why.
With maintenance, every one of the roads will refuse to do maintenance which is needed only for Amtrak and not for their freights, unless the state or Amtrak pays for it. Which is reasonable enough.
The long-term solution is for a government to buy the tracks, maintain them, and lease freight rights back to the freight operator. This eliminates dispatching problems and undermaintenance problems, pretty consistently, leaving only the construction-zone and more fundamental sources of delay. There are several tracks which have this status already.