For set_input_delay, which is using the Tco of the external device, I don't normally see negative numbers. For set_output_delay, you're spec'ing the input side of the external device, and ignoring baord delays it's basically:
set_output_delay -max $ext_device_tsu
set_output_delay -min [expr -$ext_device_th]
(The expr is just negating the hold of the external device). Basically the clock and data in the external device are racing to the FF. The data pin is usually right next to the register and short, while the clock path goes through some sort of clock tree and longer. So for hold we want the data path to be longer than the clock path and must hold it, but from a delay perspective we always look at it from data - clock, and since the clock is longer, it becomes a negative number.
(FYI, I think Thold makes sense because we all learned that first, but it's not good for doing actual calculations, because it's really clock-data, where setup and everything else we do in path analysis is data-clock. SDC constraints are consistent that way, but it takes a while to get your head around because we've thought of Thold for so long. I just do the rule of thumb that if you have a hold spec, just invert it and then use it in SDC constraints as a delay)
Also, I said set_input_delay is seldom negative. For a normal data coming out it's pretty much never negative, but for a source synchronous interface where the clock and data are coming out together, then it often is negative. In source-sync interfaces, the -max and -min values usually represent skew between data and clock, so if the skew could be +/-1ns, then your -max 1.0 and -min -1.0.