So far as I know, in Cycles, the nodes Separate RGB and Separate XYZ just take apart a three-element vector and put each component out. No math going on. Is that true? Is the only difference in the names, for keeping clear what kind of data is passing through?
By looking at the source code and the note saying :
/* Vector combine / separate, used for the RGB and XYZ nodes */
They are the same, and they don't use one node probably just to avoid confusion and keep data types separate