The necessary xshift for the nodes near coords labels can be calculated from the width of the axis, the number of bins and the value of enlarge x limits (defined in the new macro \enlargexlimits).
nodes near coords*/.add code={}{\tikzset{every node/.append style={xshift={
(\pgfkeysvalueof{/pgfplots/width}-45pt) % every plot is 45pt smaller then the width
/(1+2*\enlargexlimits) % correction for enlarge x limits
/\pgfkeysvalueof{/pgfplots/hist/bins} % number of bins
/2% shift only half of bin width
}}}},
If you want clipping all stuff right of the plot box you can fill this area with your page color and recalculate the bounding box of the whole plot.
Therefore I define a macro
\newcommand\clipright[1][white]{
\fill[#1](current axis.south east)rectangle(current axis.north-|current axis.outer east);
\pgfresetboundingbox
\useasboundingbox(current axis.outer south west)rectangle(current axis.outer north-|current axis.east);
}
and a second macro to show the resulting boundig box of the plot
\newcommand\showbb{
\draw[red,dashed](current bounding box.south west)rectangle(current bounding box.north east);
}

\documentclass[margin=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest} % notice: version 1.10 or later is needed
\newcommand*\enlargexlimits{.1} % default value for enlarge x limits
\pgfplotsset{%
hist nodes near coords/.style={%
nodes near coords*/.add code={}{\tikzset{every node/.append style={xshift={
(\pgfkeysvalueof{/pgfplots/width}-45pt) % every plot is 45pt smaller then the width
/(1+2*\enlargexlimits) % correction for enlarge x limits
/\pgfkeysvalueof{/pgfplots/hist/bins} % number of bins
/2% shift only half of bin width
}}}},
nodes near coords={%
\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}
}}
}
\newcommand\clipright[1][white]{
\fill[#1](current axis.south east)rectangle(current axis.north-|current axis.outer east);
\pgfresetboundingbox
\useasboundingbox(current axis.outer south west)rectangle(current axis.outer north-|current axis.east);
}
\newcommand\showbb{
\draw[red,dashed](current bounding box.south west)rectangle(current bounding box.north east);
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar interval,
xticklabel=\pgfmathprintnumber\tick--\pgfmathprintnumber\nexttick,
enlarge x limits=\enlargexlimits
]
\addplot+[hist={bins=3},hist nodes near coords]
table[row sep=\\,y index=0] {
data\\
1\\ 2\\ 1\\ 5\\ 4\\ 10\\
7\\ 10\\ 9\\ 8\\ 9\\ 9\\
};
\end{axis}
\clipright
\showbb
\end{tikzpicture}
\end{document}
But there will be a problem if you increase the number of bins. Here is the result of bin=9:

To solve this you can decrease the enlarge x limits by redefining the macro \enlargexlimits
\begin{tikzpicture}
\def\enlargexlimits{0.04} % changing the value of `enlarge x limits`
\begin{axis}[
ybar interval,
xticklabel=\pgfmathprintnumber\tick--\pgfmathprintnumber\nexttick,
enlarge x limits=\enlargexlimits
]
Then you will get

Or with \def\enlargexlimits{0} you will get

Note: the labels are again automatically centered.
My former suggestion
To supress the additional label the pgfmath if-then-else function is used. The syntax is x ? y : z meaning " if x then y else z "
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest} % notice: version 1.10 or later is needed
\newcommand*\NNC{\pgfmathprintnumber{\pgfkeysvalueof{/data point/y}}}
\newcommand*\enlargexlimits{.1} % default value for enlarge x limits
\pgfplotsset{%
hist nodes near coords/.style={%
nodes near coords*/.add code={}{\tikzset{every node/.append style={xshift={
(\pgfkeysvalueof{/pgfplots/width}-45pt) % every plot is 45pt smaller then the width
/(1+2*\enlargexlimits) % correction for enlarge x limits
/\pgfkeysvalueof{/pgfplots/hist/bins} % number of bins
/2% shift only half of bin width
}}}},
nodes near coords={%
\pgfmathparse{
\pgfkeysvalueof{/data point/x}<#1*\pgfkeysvalueof{/pgfplots/hist/data max}?%
"\noexpand\NNC"% if true print nodes near coords
:% if false suppress the additional node near coords
}\pgfmathresult%
}},
hist nodes near coords/.default={0.9}% if you set data max explicitly it will be 1
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar interval,
xticklabel=\pgfmathprintnumber\tick--\pgfmathprintnumber\nexttick,
enlarge x limits=\enlargexlimits
]
\addplot+[hist={bins=3},hist nodes near coords]
table[row sep=\\,y index=0] {
data\\
1\\ 2\\ 1\\ 5\\ 4\\ 10\\
7\\ 10\\ 9\\ 8\\ 9\\ 9\\
};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
ybar interval,
xticklabel=\pgfmathprintnumber\tick--\pgfmathprintnumber\nexttick,
enlarge x limits=\enlargexlimits
]
\addplot+[hist={bins=2},hist nodes near coords]
table[row sep=\\,y index=0] {
data\\
1\\ 2\\ 1\\ 5\\ 4\\ 10\\
7\\ 10\\ 9\\ 8\\ 9\\ 9\\
};
\end{axis}
\end{tikzpicture}
\end{document}

nodes near coordsshould not generate the last item at all forybar interval. – Christian Feuersänger Jun 08 '14 at 20:39pgfplots(i.e. I accept them as bug/feature requests). – Christian Feuersänger Jun 08 '14 at 20:40