Почему при использовании оператора or в Пайтон, нарушается логика if?
Потому что у оператора or меньший приоритет, чем у оператора ==. Сначала выполняется message.text == 'BLA', затем 'BLABLA' — последнее всегда расценивается как True (непустая строка). Можно расставить скобки для лучшего понимания приоритета выполнения:
if (message.text == 'BLA') or 'BLABLA':
Затем строку "BLABLA" можно заменить на True:
if (message.text == 'BLA') or True:
Это условное выражение всегда будет равно True.

Скорее всего, вы хотели написать:
if message.text == 'BLA' or message.text == 'BLABLA':
Я заменил бы эти два условия кортежем с допустимыми значениями и оператором in:
if message.text in ('BLA', 'BLABLA'):
if message.text == 'BLA' or message.text == 'BLABLA':
    ...
Иначе питон преобразует текст к значению boolean, и BLABLA будет равно True.
Оператор or, если один из операндов равен True - возвращает True, иначе False