Each set variable step overwrites the previous data with data from the current record--producing the results that you report here.
You need an expression that combines the data already present in the variable with the new data you are appending to it.
Try it this way:
Set Variable [$ColorList; Value: List ( $ColorList ; WorkhorseData::Color_Desc ) ]
That was it! Thank you!