Here is a comparison of different ways of doing the same job with the resulting tables as Jake commented:
First, let's draw a few atanh(x) plots
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[no markers,samples=202,restrict y to domain=-2:2]
\addplot[id=atanh1] gnuplot{atanh(x)};
\end{axis}
\begin{scope}[domain=-2:2,shift={(10,2.5)}]
\draw[ultra thick,red] plot[raw gnuplot,id=raw-example] function{set samples 202; plot atanh(x)};
\end{scope}
\begin{scope}[shift={(0,-7)}]
\begin{axis}[no markers,samples=202,domain=-0.999:0.999]
\addplot[id=atanh1] gnuplot{atanh(x)};
\end{axis}
\end{scope}
\end{tikzpicture}
\end{document}

What I wan't to emphasize here is along the lines of Jake's comment. If you look at the resulting .table files of the first two methods, most of the sampling points are discarded and even in the original pgfplots part it's drawn with lines to origin. Here is the snapshot from the .table file of the raw-example. u and i are the identifiers that confuses pgfplots and it draws them anyway.

As we can see only a limited number of points are of interest and the rest is either outside the domain of the function -1<x<1 or numerical noise which is the reason why I manually tuned to 202 samples. However in my last example I restrict the domain of the function such that all samples are valid and increases the resolution.
Long story short, it's not a good idea to rely on the plotter's abilities for identifying the domain of the function and filtering them, which would result in dummy sampling points , increased compile time and incerased file sizes for no good reason. Although, gnuplot and pgfplots are marvellous tools, we should help them a little anyway :)
,domain=-0.99:0.99to the options helps. – percusse Apr 15 '12 at 10:18