Here's your code cleaned up a bit and closer to what you want.
\documentclass{article}
\usepackage{xcolor,array}
\usepackage{tikz}
\usetikzlibrary{matrix,positioning}
\usetikzlibrary{calc}
\tikzset
{
table/.style={matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={rectangle,
draw=black,
text width=2ex,
align=center,
minimum width=1.5cm
},
text depth=0.25ex,
text height=1ex,
nodes in empty cells
},
texto/.style={font=\footnotesize\sffamily},
title/.style={font=\small\sffamily},
my top text/.style={font=\small\sffamily},
my bottom text/.style={font=\sffamily\footnotesize}
}
\newcommand\CellText[2]{%
\node[texto,left=of mat#1,anchor=east]
at (mat#1.west)
{#2};
}
\newcommand\SlText[2]{\node[my top text,anchor=base] at ($(mat#1.north)+(0,1.0ex)$) {#2};}
\newcommand\SIundertext[2]{\node[my bottom text,anchor=base] at ($(mat#1.south west)-(0,2.0ex)$) {#2};}
\newcommand\RowTitle[2]{%
\node[title,left=6.3cm of mat#1,anchor=west]
at (mat#1.north west)
{#2};
}
\begin{document}
\begin{tikzpicture}[node distance=0pt and 0.5cm]
\matrix[table] (mat11) { & & |[fill=gray]| & |[fill=gray]| & & & |[fill=gray]| \\ };
\foreach \x/\y in {1/$0$,
2/$\ldots$,
3/$h-1$,
4/$h$,
5/$h+1$,
6/$\ldots$,
7/$b$}
{ \SlText{11-1-\x}{\y} }
\foreach \x/\y in {1/$0$,
2/$\epsilon$,
3/$(h-2)\epsilon$,
4/$(h-1)\epsilon$,
5/$h\epsilon$,
6/$(h+1)\epsilon$,
7/$\xi\epsilon$}
{ \SIundertext{11-1-\x}{\y} }
\node[my bottom text] at ($(mat11-1-7.south east)-(0,1.5ex)$) { $(\xi+1)\epsilon$ };
\node[my top text,anchor=base east] at ($(mat11-1-1.north west)-(2ex,0)+(0,1.0ex)$) {Bin};
\node[my bottom text,anchor=base east] at ($(mat11-1-1.south west)-(2ex,0)-(0,2.0ex)$) {Time};
\node[title,anchor=east] at ($(mat11-1-1.west)-(2cm,0)$) {Coverage};
\end{tikzpicture}
\end{document}

I've made a couple of changes. I would suggest that you create names for your own styles that help convey what they're for: such as my top text vs. textto. Also, instead of writing \SlText or \SIundertext multiple times, you can use a \foreach loop to iterate over only the positions you want paired up with their text. (Also, it's potentially a bit confusing to write \SI... for a macro not connected with the siunitx package.) I used minimum width=1.5cm to enlarge the nodes which make up your time line.
I used the calc library to help position text above and below the nodes in the matrix.
Generally, the call to the TikZ libraries should occur in the preamble.
UPDATE FOR BROKEN TIME LINE
I've modified the code slightly to give the impression of a broken line at the points of ellipsis:
\documentclass{article}
\usepackage{xcolor,array}
\usepackage{tikz}
\usetikzlibrary{matrix,positioning}
\usetikzlibrary{calc}
\usetikzlibrary{decorations.pathmorphing}
\tikzset
{
table/.style={matrix of nodes,
row sep=-\pgflinewidth,
column sep=-\pgflinewidth,
nodes={rectangle,
draw=black,
text width=2ex,
align=center,
minimum width=1.5cm
},
text depth=0.25ex,
text height=1ex,
nodes in empty cells
},
texto/.style={font=\footnotesize\sffamily},
title/.style={font=\small\sffamily},
my top text/.style={font=\small\sffamily},
my bottom text/.style={font=\sffamily\footnotesize}
}
\newcommand\CellText[2]{%
\node[texto,left=of mat#1,anchor=east]
at (mat#1.west)
{#2};
}
\newcommand\SlText[2]{\node[my top text,anchor=base] at ($(mat#1.north)+(0,1.0ex)$) {#2};}
\newcommand\SIundertext[2]{\node[my bottom text,anchor=base] at ($(mat#1.south west)-(0,2.0ex)$) {#2};}
\newcommand\RowTitle[2]{%
\node[title,left=6.3cm of mat#1,anchor=west]
at (mat#1.north west)
{#2};
}
\begin{document}
\begin{tikzpicture}[node distance=0pt and 0.5cm]
\matrix[table] (mat11) { & |[draw=none,alias=gap A]| & |[fill=gray]| & |[fill=gray]| & & |[draw=none,alias=gap B]| & |[fill=gray]| \\ };
\foreach \x/\y in {1/$0$,
3/$h-1$,
4/$h$,
5/$h+1$,
7/$b$}
{ \SlText{11-1-\x}{\y} }
\foreach \x/\y in {1/$0$,
2/$\epsilon$,
3/$(h-2)\epsilon$,
4/$(h-1)\epsilon$,
5/$h\epsilon$,
6/$(h+1)\epsilon$,
7/$\xi\epsilon$}
{ \SIundertext{11-1-\x}{\y} }
\node at (mat11-1-2.center) {$\ldots$};
\node at (mat11-1-6.center) {$\ldots$};
\node[my bottom text] at ($(mat11-1-7.south east)-(0,1.5ex)$) { $(\xi+1)\epsilon$ };
%% create ragged edges for ellipsis in time line
\coordinate (intrusion for box) at (2.75ex, 0 );
\coordinate (vertical border adj) at ( 0 , 0.2pt);
\coordinate (horizontal border adj) at (0.2pt, 0 );
\foreach \x in {A,B}{
\draw ($(gap \x.south west)+(intrusion for box)+(vertical border adj)$) --
($(gap \x.south west)+(horizontal border adj)+(vertical border adj)$) --
($(gap \x.north west)+(horizontal border adj)-(vertical border adj)$) --
($(gap \x.north west)+(intrusion for box)-(vertical border adj)$);
% \draw [decorate,decoration={random steps,segment length=1pt,amplitude=0.5pt}]
\draw [decorate,decoration={zigzag,segment length=4pt,amplitude=2pt}]
($(gap \x.north west)+(intrusion for box)-(vertical border adj)$) --
($(gap \x.south west)+(intrusion for box)+(vertical border adj)$);
\draw ($(gap \x.south east)-(intrusion for box)+(vertical border adj)$) --
($(gap \x.south east)-(horizontal border adj)+(vertical border adj)$) --
($(gap \x.north east)-(horizontal border adj)-(vertical border adj)$) --
($(gap \x.north east)-(intrusion for box)-(vertical border adj)$);
\draw [decorate,decoration={zigzag,segment length=4pt,amplitude=2pt}]
($(gap \x.north east)-(intrusion for box)-(vertical border adj)$) --
($(gap \x.south east)-(intrusion for box)+(vertical border adj)$);
}
\node[my top text,anchor=base east] at ($(mat11-1-1.north west)-(2ex,0)+(0,1ex)$) {Bin};
\node[my bottom text,anchor=base east] at ($(mat11-1-1.south west)-(2ex,0)-(0,2.0ex)$) {Time};
\node[title,anchor=east] at ($(mat11-1-1.west)-(2cm,0)$) {Coverage};
\end{tikzpicture}
\end{document}
which produces

Not particularly eligant, and I'm pretty sure this is not quite the effect that you want. I'll work on it some more.
\node[anchor=east] at (mat11-1-5.east) {Testing 123};called from outside of the matrix. – A.Ellett Sep 22 '13 at 05:27