\DeclareMathOperator adds spaces after the periods contained in its second argument (name text)

\DeclareMathOperator{\limone}{l{.}i{.}m{.}} will fix the excess space in row 1, making it like row 2. Note that while the l.i.m. will still line up with your \text case, there will be a gap following the last ., because l.i.m. (in the form of \limone or \limtwo) is now an operator, whereas \text{l.i.m.} is a math atom.

\documentclass{article}
\usepackage{amsmath}
%
\DeclareMathOperator{\limone}{l{.}i{.}m{.}}
\newcommand\limtwo{\mathop{\mathrm{l.i.m.}}}
%
\begin{document}
\begin{align*}
  A_t & =\limone A_{n,t} \\
  A_t & =\limtwo A_{n,t} \\
  A_t & =\text{l.i.m.} A_{n,t}
\end{align*}
\end{document}

enter image description here


Compare with

$l\mathpunct{.}i\mathpunct{.}m$

Indeed, your \limone gives \qopname \newmcodes@ o{l.i.m.} and \newmcodes assigns \mathpunct category to the dot (which will be taken in letters font, not operators...). Another strangeness of \newmcodes@.

\newmcodes@ ->\mathcode `\'39\mathcode `\*42\mathcode `\."613A\ifnum \mathcode 
`\-=45 \else \mathchardef \std@minus \mathcode `\-\relax \fi \mathcode `\-45\ma
thcode `\/47\mathcode `\:"603A\relax 

You will have same \mathpunct spacing with :. enter image description here

What to do? You can always define your own \newmcodes@ to replace above definition.