Long story short: It's the acid, and any acid will do.
Food colourings are a type of dye known as an acid dye. Their effectiveness relies on hydrogen bonding which only works in an acidic environment.
It's not that the vinegar does anything special - not exactly. Rather, adding a few drops of food colouring to a large amount of water would give you something that's not acidic at all, which will diminish or totally eliminate its effectiveness as a dye. Including vinegar in the mix simply allows you to stretch your rations, so to speak - to dilute the colouring in a whole lot of liquid without making it useless as a dye in the process.
Basically, you're creating a dyebath, which is a well-known term in the textile world, as it's used to dye wool and other fabrics. Warm temperatures (140-180° F) also aid in dye absorption, and apparently - although I'm no expert in textiles - a small amount of Urea also helps.
You could definitely use cream of tartar, citric acid or any other acid, but the recipes using vinegar are generally aiming for a specific pH, so you'll want to adjust quantities of any other acidifier to match. Presumably, vinegar is just the cheapest and most widely available acidifier.