I would define a macro to handle this in a consistent way. The following minimal example defines \var[<var>]{<sub>}[<sup>] that sets <var>_{<sub>}^{<sup>} (<var> and <sup> are optional). The addition of an empty <sup> ensures a consistent height for your superscripts. If your optional <sup> is something other than a "normal superscript" (let's call it "bizarre"), adding \vphantom{<bizarre sup>} before #3 should take care of the vertical alignment:

\documentclass{article}
\usepackage{xparse}% http://ctan.org/pkg/xparse
\NewDocumentCommand{\var}{O{s} m O{}}{%
\ensuremath{#1_{#2}^{#3}}% add \vphantom{<bizarre sup>}
}
\begin{document}
$s_i\ s_i^*$\ \var{i}\ \var{i}[*]\ \var[a]{k}\ \var[a]{k}[*]
\end{document}
<var> has a default of s. If <sup> contains other (more complex) elements, you could use \mathstrut. That is, with some knowledge of the input, you can optimise the output.
It would also be possible to modify the macro to allow you to use superscript notation ^{..} as needed, rather than an optional <sup> argument, but this enforce the use of math mode, rather than using \ensuremath.
xparse provides the macro definition interface.
^{}is sufficient (no need of\vphantom). And here\ensuremathis very questionable. – egreg Apr 12 '12 at 17:17