Потому что ('first' or 'second') оценивается интерпретатором как логическое выражение. Соответственно, оператор or возвращает первое истинное значение - 'first' и присваивается value, вторая строка даже не проверяется. Во втором случае or соединяет два сравнения, каждое из которых проверяется отдельно: сначала проверяется value == 'first', если результат False, тогда проверяется value == 'second'.
Почитай про работу и приоритет логических операторов python