Cross-posted to wikipedia-l and wikitech-l, I suggest you reply to wikitech-l.
I've just committed a change to make special page names case-insensitive and localisable. The default name for a special page can be changed, but a redirect from the English name will always be kept. At present, there are no local sets of names committed, although one has been proposed for German. I have created a wiki page for discussion and coordination of this task:
http://www.mediawiki.org/wiki/Special_page_names
The following is for developers, everyone else can stop reading here.
There are a few practice changes associated with this change, for both core and extension developers.
Instead of Title::makeTitle( NS_SPECIAL, 'Contributions' ); use SpecialPage::getTitleFor( 'Contributions' );
Instead of Title::makeTitleSafe( NS_SPECIAL, "Blockip/$ip" ); use SpecialPage::getSafeTitleFor( 'Blockip', $ip );
Instead of ($title->getNamespace() == NS_SPECIAL && $title->getDBkey() == 'Userlogout') use $title->isSpecial('Userlogout')
Only the last of these three changes is compulsory for extensions; recognition of core special page names must be migrated. Old titles will continue to work, so the first two changes are optional for extensions and can be done at your leisure. All three changes should be considered compulsory for core code.
Extension special pages can provide local special page names using the LangugeGetSpecialPageAliases hook.
Hard-coded special page names in messages should be changed simultaneously when the special page names themselves are changed. Special page names are language-dependent, not site-dependent, so there should be no need for a {{SPECIALNAME:xxx}} function.
-- Tim Starling