The way these things work(so far as I know) is that for the data to be passed along the chain the gap between transmissions can't be greater than 50 microseconds.
Of course a skilled engineer could write a tight output loop that computes and outputs every value on the fly with a guarantee that the time budget won't be exceeded, but your average Arduino user probably doesn't have the knowledge to do this. So all the control libraries that I know allocate a memory buffer for the whole output stream and let the user update it whenever they want.