В случае генератора списка, он создает список со всеми значениями из словаря, удовлетворяющих условию.
В случае же вашего развернутого цикла, вы вместо списка со всеми подходящими значениями присваиваете список с одним значением. При повторном нахождении подходящего элемента вы переприсваиваете старое значение новым, а не добавляете в список.
Чтобы цикл был эквивалентен генератору, его надо изменить как-то так:
when = {}
for dest in set(fls_gen.values()):
key_list = []
for key, value in fls_gen.items():
if value == dest:
key_list.append(key)
when[dest] = key_list