Okay, being something of a math geek, I had to play around with this a little. I initially thought I had it on the run as a rounding error due to the binary representation of decimal fractions, but couldn't quite make it work out. At some tempos, I could predict the exact error in what SONAR would show out at measure 1055, for example, but I actually couldn't make sense of the example you gave where 140BPM is 19.6875 samples/tick or a nice even 18900 samples/beat.
Nevertheless, I think this is either a function of their not having allocated a enough precision to represent these fractional samples/tick values or they're using some internal reference for time other than sample rate that doesn't resolve evenly into both samples and ticks.
In any case, this is an interesting discrepancy but definitely not worth worrying about in the real world.