A bigger problem is closing the cafe and dining cars often well over an hour ahead of the end of the run, which leaves a lot of potential revenue uncollected as well as inconveniencing passengers. Ditto failing to open the cafe and dining cars until long after the train leaves its originating station.
For the former, in a way I see why the diner closes when it does. So that staff can start to clean things down, and get the dining car ready to be reused again when it gets to that train's terminating station. And for certain train sets, IIRC they are turned around to go out in the other direction later in the day. When I rode the Empire Builder going east(#8/28) to Chicago, they did last call for lunch meals in the dining car in Columbus. Which to me seemed fine, plus they didn't force me off the dining car despite that I was finishing my lunch meal there just before we hit Milwaukee.
I think you have a legitimate argument on the cafe car and the dining car going outbound, since occasionally the crew has taken a little long to open those things up on outbound trains after the originating station. In most cases though, the opening time hasn't bothered me.
Finally like another person said, the practice of closing the cafe car 1 stop before the final arriving terminal station doesn't bother me. And as like one person said, *one can find better food (vs. typical cafe food) outside the train, and for a better price often, if he/she waits till the train's terminating station.
*- I can see how this practice may be annoying for say someone boarding at the last station before a train becomes discharge only, AND if a train is running late enough that one doesn't have time to find a meal in _____ city, due to the fact one may immediately have to turn around and board an outbound Amtrak train.