Originally, the quotes were not used. This meant that identifiers could not use reserved names such as index and table. And case of identifiers was irrelevant. However, the convention was to use uppercase identifiers not just in the database but also in many programming languages.
Later the quotes were allowed, making possible the ability to use mixed case identifiers as well as reserved names. On some databases, you can choose which option you want to use.
The sql-92 standard has been a little ambiguous allowing different languages to behave a little differently. There are quirks within a language such as Firebird. Older ones such as Oracle have had to respect legacy usage.
As an example in Firebird/Interbase, say one is using dialect 3 (telling the database that quoted identifiers will be used). If an identifier is left unquoted it is treated as dialect-1 identifier. Theoretically, it should be upper case, but the case is actually irrelevant.
Some languages may insist on upper case identifiers being upper case. But all this is because of historical/legacy support and/or newer decisions they have had to make in their design. It would appear that Some have decided to make it easier for the user, whereas others are adhering strictly to the standard.
Standards
It would be useful to remember that the languages were not originally designed to comply with a standard, let alone sql-92. They were adapted to comply with the standard. So, implementations vary a little bit.