You can redefine the command _. Therefor you must change the catcode of the sign. The redefinition in the example should be done in the preamble. I did it in the document body to demonstrate the behaviour.
\documentclass{article}
\usepackage{fouriernc}
\begin{document}
$a_1$
$a_{\!1}$
\catcode`\_\active
\def_#1{\sb{\!#1}}
$a_{1}$
\end{document}

Instead of changing the underscore global, you can set the mathcode of the token to redefine (suggest by David Carlisle and improved by egreg):
\documentclass{article}
\usepackage{fouriernc}
\begin{document}
$a_1$
$a_{\!1}$
\catcode`\_=12
\mathcode`\_="8000
\begingroup\lccode`\~=`\_
\lowercase{\endgroup\def~#1}{\sb{\!#1}}
$a_{1}$
\begin{equation}
1+1=1\label{eq_1}
\end{equation}
Text \ref{eq_1} Text$_1$
\end{document}
However the best is to avoid _ in labels.
\label{}. How can I fix this? – Foo Bar Apr 18 '13 at 09:05\activeat\begin{document}when the.auxfile is read. – yo' Apr 18 '13 at 15:23Missing \endcsname insertedin the.auxfile on lines like\usedref{eq:label_with_underscore}. – Foo Bar Apr 18 '13 at 15:29