Потому, что в Delphi одна кодировка - виндовская
Нет такой кодировки. Есть ANSI, и есть UTF-16. Все системные вызовы внутри VCL и RTL идут в какой-то одной из этих кодировок, в зависимости от версии Delphi. Есть возможность также применять API-функции с другой кодировкой, указывая их явно.
Системные вызовы будут unicode, внутренняя кухня (RLT) тоже.
Для кроссплатформенного программирования не факт, что будет хорошо, учитывая, что Windows работает с UTF-16, а Linux - с UTF-8.