Modern SPD implementations have wonderful capabilities. I've seen several DIMMs that had SPDs which set different timings on AUTO depending on what frequency they were run at. Very cool.
Back to the OP's question: If you've never taken an intro CEG course, this may go over your head. Basically, to have latency of any reasonably small measure, you have to have some sort of related clock rates; they don't have to necessairly be the same speed, but they have to be linked somehow or the clock signals will meet up very rarely.
Think like when you're driving on a rainy day. You can see the cars around you with their windshield wipers on. But because they run at very slightly different frequencies than yours does, they don't match up with yours very often.
Without using some sort of buffering, you can only transmit data when the clock signals of the two devices trying to communicate are in the correct position, whether low or high. If you're running asynch frequencies, that may happen very rarely. If the rates are synch, even if scaled, because they derrive from the same clock, the clock signals will match up far more often.
Now as to why chipsets don't have an infitine number of scalar ratios: Same reason cars don't have an infinite number of gears. The scaling hardware in your chipset is an actual piece of hardware, if microscopic.