> So why push 1.5x of a latency period of silence into the FIFOs to start? I may be missing something. 

I wan't to start in a settled state. The drift correction will always slowly move to on chunk available after reading. 
So If we start with 1.5, in both cases there is only 0.5 chunks to shift. The shifting itself is highly undesirable because of the added Frames so these preset just limits the settling period after start. 

> I don't think that's true -- you insert 1.5x a latency period of silence into the FIFOs. This is a 1.5x latency period delay regardless of which callback comes first. Am I misunderstanding how this works?

Yes it is 1.5x in the first place and 1x after, but it is required, let me explain:  

There is a delay of up to one latency between composing a chunk and write it to the device. So we need one buffer.
Unfortunately this delay is somehow random, an WILL produce a delay slow shift without we can avoid it. (Thats the price for using a cheap USB soundcard). 
Additional we need an filled chunk and an empty chunk. These are used when on sound card overtakes the other. This always happens, since they are driven form two crystals.  In my case every 30 s @ 23 ms. After they are consumed, the drift correction takes place and fills or clears the reserve buffers. If this is finished before an other overtake happens, we do not face any dropouts or clicks. 
So thats why we need a Fifo of 3 chunks. 

In addition there is a jitter effect. It happens that one callback is delayed, in this case the second one fires two times and then the first one fires two time as well to catch up. This is also fixed by the additional buffers. If this happens just after an regular overtake, we will have clicks again. In one of my versions I have played with 5 chunks, but it turns out that it only happens in the opposite direction, so 3 chunks are just fine.  

I think I will put this explanations into source.