In LaTeX 2.09 the definitions were
\def\aa{\accent23a}
\def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
\rlap{\raise.67\dimen@\hbox{\char'27}}A}
as there was no encoding support, and no \r accent defined.
So whatever else is the case \aa and \AA are not defined as in LaTeX 2.09.
With current latex and your MWE shows that the effective definition in your case is
> \AA=macro:
->\OT1-cmd \AA \OT1\AA .
and you do get an accented A in X1:
\documentclass{article}
\usepackage[utf8]{inputenc} % source file encoding
\usepackage[X2,T2A]{fontenc} % cyrillic font encoding
\usepackage[english,russian]{babel}
% \DeclareTextSymbolDefault{\AA}{OT1}
% \DeclareTextSymbolDefault{\aa}{OT1}
% \DeclareTextCommand{\aa}{OT1}{\r a}
% \DeclareTextCommand{\AA}{OT1}{\r A}
\begin{document}%
\verb|\cyrillicencoding|=\cyrillicencoding
Русский English
\meaning\AA
\verb|\AA|=\AA
\verb|\aa|=\aa
\section{X2}
\fontencoding{X2}\selectfont
\verb|\cyrillicencoding|=\cyrillicencoding
Русский English
\show\AA
\verb|\AA|=\AA (A \r A)
\verb|\aa|=\aa (a \r a)
\show\AA
\end{document}

The suggested definitions would need to be extended to all encodings.
As posted (and as currently in Russian babel) they break \AA for (for example) T1 encoding which is bad as it is the main encoding for the Scandinavian languages for which this is used.
\documentclass{article}
\usepackage[X2,T1]{fontenc} % cyrillic font encoding
\showoutput
\setbox0\hbox{foob\aa r}\showbox0
\DeclareTextSymbolDefault{\AA}{OT1}
\DeclareTextSymbolDefault{\aa}{OT1}
\DeclareTextCommand{\aa}{OT1}{\r a}
\DeclareTextCommand{\AA}{OT1}{\r A}
\setbox0\hbox{foob\aa r}\showbox0
\begin{document}%
\end{document}
Shows that by default \aa in T1 comes from the T1 encoded font, which allows hyphenation and kerning to work correctly
\hbox(6.8872+0.0)x27.79877
.\T1/cmr/m/n/10 f
.\T1/cmr/m/n/10 o
.\kern0.27771
.\T1/cmr/m/n/10 o
.\T1/cmr/m/n/10 b
.\T1/cmr/m/n/10 �
.\T1/cmr/m/n/10 r
But after the suggested definitions \aa comes from the OT1 font
> \box0=
\hbox(6.94444+0.0)x27.8
.\T1/cmr/m/n/10 f
.\T1/cmr/m/n/10 o
.\kern0.27771
.\T1/cmr/m/n/10 o
.\T1/cmr/m/n/10 b
.\kern -1.25 (for accent)
.\OT1/cmr/m/n/10 ^^W
.\kern -6.25002 (for accent)
.\OT1/cmr/m/n/10 a
.\T1/cmr/m/n/10 r
So hyphenation in any word using å is broken.
Ådirectly. – Henri Menke Aug 08 '17 at 03:51X2is not a “proper” LaTeX font encoding, for the precise reason it doesn't contain the Latin alphabet. – egreg Aug 08 '17 at 08:28X..notT..is because it doesn't follow the rules that underlie the assumptions in the code with respect to latin in the ascii positions and T1-compatible upper/lower case tables. That said something like you suggest would be possible but I have to ask, why would you expect\AAto work, ifAdoes not work within the scope of that encoding? – David Carlisle Aug 08 '17 at 09:39\AAworking OK??? – David Carlisle Aug 08 '17 at 09:44russian-babelavailable from CTAN. But I experimented with forthcoming version where workaround for X2 encoding is removed. I believe thatrussian-babelis not a good place for such workaround. That's where my question raised from. – Igor Kotelnikov Aug 08 '17 at 11:42