PHP has no built-in encoding of text strings. While there are functions that support various encodings, especially UTF8 and related encodings, for the most fundamental parts of a language a string is just a series of bytes. There aren't any built in assumptions about things like how many bytes are in a character, what bytes are allowed, or indeed which characters are related by being the upper/lower case versions of the same letter.
So to make array keys case insensitive in a reliable way the array handling functions would need to document the encoding and possibly collation used for string keys. To be widely useful they might need to make those options available to programmers, and allow turning off case sensitivity, e.g. for people who use non-textual binary strings, or binary strings in mixed encodings or encodings that the function does not support as array keys.
PHP version 6 was an attempt to build unicode-encoded string handling in to the core of the language. But the project ran into serious problems, and so there was never a full release of PHP 6.