PPQ is, if I remember correctly, a frequency when combined with bpm. If you want to generate things based on the beats, you'll end up measuring the time of one beat, because that's what the Arduino can do. And once you start measuring delays, you'll pretty soon hit functions like millis() and micros() or you start counting your own beats. In all those situations you'll face the overflow. And subtracting the endvalue from the startvalue lets you prevent the overflowing.
Oh, and in case you worry that your bpm and ppq don't line up with microseconds well enough, you just need to make sure you distribute the error evenly to minimise it. That's not such a great matter, one just needs to be aware of the resolution of the timer (usually 4 or 8 µs) and prevent accumulating errors.
Korman