I agree on both points. (I would still like to disect I/O some more after this.) Remember that the setup check on an I/O really only has two numbers, your setup relationship and the -max value. The setup relationship is what the interface needs to meet timing, and the -max value is how much of this is used externally. Whatever isn't used externally is allowed for the FPGA. So if your setup relationship is 4ns and the -max is 1.5, that means the FPGA has 2.5 to work.
Conversely, the hold has a similar scenario, where there is a hold relationship and the -min value. If your hold relationship is 0 and the -min value is -1 then the FPGA has +1 to play with. (Hold is always more difficult to understand, but it's basically that your minimum source clock delay + data path gets to the latch register after your longest destination clock delay. I'm simplifying here.)
I didn't see in AN433 where the -max is negative and -min is positive, but if that is occuring, could see how it's confusing. I believe this is possible, but not a fan and think it can be accomplished in better ways.
Let's take a simple case(not source-synchronous) of an output port driving another device. Say the clock is 10ns, and hence the setup relationship is 10ns and the hold relationship is 0ns. If the external delays were both 0, then the FPGA would need to get its data out sometime between 0 and 10ns. Now let's say the external device doesn't latch the data for another clock cycle, i.e. at 20ns. You could say the external -max delay is -10ns, which essentially buys 10ns for your setup analysis. Let's also say the external device only latches a cycle before new data is sent, i.e. if your FPGA got its delay out in -10ns would there be a violation. This can be done by saying the -min delay is 10ns. So the -max is -10ns and the -min is 10ns and says the FPGA can get its data out between -10ns and +20ns. Technically, it works. I confused myself twice though.
I think it's much easier to apply multicycles to make the setup relationship 20ns and hold relationship -10ns. Then your external delays can be 0ns(or more exactly, your -max will be positive and the hold will be negative).
That's one of the issues with I/O timing, and source synchronous interfaces. There are 2 values used to constrain the I/O, the setup relationship and -max value. (And 2 values for hold analysis). So a setup relationship of 10 and -max external delay of 3 will constrian the FPGA as a setup relationship of 7 and a -max external delay of 0, or a setup relationship of 5 and -max external delay of -2.
The problem with source synchronous interfaces is that external devices will spec the exact same thing in different ways. Some will say they phase-shift the clock, for example, while others will say they don't, but they'll givea Tsu/Th that looks like phase-shift. I hope to go through all this at some point.
Anyway, I'm babbling. Hope it helps.