I did consider using y as the absolute cut tick value - in fact I had originally implemented it that way. As you say it is a little more intuitive, and you can cut the previous note before the current delayed note begins (nb: you can always achieve that by using an extra channel anyway, so this is pure "syntactic sugar").
On the other hand, the benefits of using x+y are:
1. A larger range of ticks can be covered. Your cut can be as late as tick 0x0F+0x0F - nice if you have over16 ticks/row.
2. While tracking, I noticed that often you want to keep the duration of note constant and just change the delay value. If you use absolute values, you have to change both numbers to keep a constant duration. This is the main reason I decided on x+y, such that y represents the absolute duration of the note (except when y=0 as you correctly point out, or when (x+y)>ticks/row, because cuts don't carry beyond the current row).
That being said, I don't have strong feelings either way - I'm happy to change it if you prefer. :)
Regarding what happens if y=0 (i.e the cut tick is the same as the delay tick), there are two choices: either the note doesn't play at all, or it doesn't cut at all. I think the latter is more useful. Sometimes you're experimenting with different delay (or cut) values, and come to the conclusion you don't want a delay (or cut) at all. In this context, being able to just replace one of the values with 0 is handy. In other words, having :x0 behave like SDx and :0y behave like SCy is quite nice imho.