Eine garantierte Reihenfolge gibt es nur mit ORDER BY. In deinem Fall kann dir die Funktion FIELD() helfen - zumindest, wenn du MySQL verwendest.
In diesem Fall ist vermutlich eher FIND_IN_SET() für die Sortierung interessant - es geht ja um die Position eines Elements in der Liste (dieselbe die per IN() bereits bekannt ist) und nicht um die Position eines Zeichens in einer Zeichenkette. FIND_IN_SET steht in der Dokumentation direkt unter FIELD()