In other words, you got the upstairs room for $239 (using that example).
That is valid.
According to a contact of mine (and I know this forum seems to go back and forth on this detail), prices aren't assigned to specific rooms. What happens is that, when there is only one room left at a particular bucket, that fare gets locked up as soon as someone calls and asks for a price quote. If someone then wants to change rooms, that lower bucket fare is no longer available, since it's already "taken." The agent would have to release the room that is automatically assigned (and therefore, also make that fare bucket available again), and then start over again, picking up the room the passenger wants.
So, as I understand it (using your example), let's say there are two rooms left, rooms 9 (upstairs) and 11 (downstairs). There is one B bucket fare left at $239, and one A bucket left at $340. A passenger calls and wants a room. The agent immediately locks in the room before quoting the price, so that someone else doesn't steal the room in the middle of the transaction. Now the passenger has room 11 at $239. But the passenger decides he wants room 9 instead. Since room 11 is still locked, the B bucket fare is no longer available, so the only way to trade rooms is to pay the A bucket fare. However, if the agent cancels the reservation on room 11, and starts over, and then selects room 9, now that B bucket fare is available again, since there isn't a current reservation using the last fare at that bucket.
It isn't the prettiest way of doing things, but I gather that's the best they can do given Arrow's limitations (or maybe there is some intentional reason for throwing that extra step in there). When people keep getting told that the only way to change rooms right off the bat (i.e. when they're making the reservation, rather than later on when Amtrak may have decided to raise the fares across the board) is to pay a higher fare, it's probably either an agent that doesn't want to be bothered with the extra work, or the agent hasn't been fully trained on how to do that properly. Don't be surprised if it's the latter. I've had many experiences with agents that didn't know how to process my reservation correctly, simply because I was doing something "complicated" (such as trying to get a NARP discount, or trying to use one of those AGR one-class upgrade coupons).
Just because an agent gives you an answer doesn't necessarily mean it's the correct one. In this case (if I'm reading your explanation correctly), the agent actually made the room swap the correct way, and you didn't have to pay a higher fare.