In der Tat bietet LaTeX selbst bereits für eben diesen Zweck die im Zweitalter Zeitalter von [`tabularx`][1] nur noch wenig bekannte `tabular*`Umgebung. `tabular*`-Umgebung. Im Gegensatz zur `tabularx`-Umgebung werden hier keine Spalten automatisch auf die gewünschte Breite gebracht. Stattdessen muss man über `\extracolsep` einstellen, wie die zusätzliche Breite auf die Spaltenabstände verteilt werden soll. Dabei verwendet man am einfachsten `\extracolsep{\fill}` in der Spaltendeklaration vor der Spalte, deren nächster Abstand gedehnt werden soll. Die Dehnung wird dann so lange ausgeführt, bis `\extracolsep` erneut aufgerufen wird. Die Abstände vor der ersten und nach der letzten Spalte werden nie gedehnt.
Eine einfache Abänderung Deines eigenen Beispiels wäre also:
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\begin{document}
\begin{table}[htb]
\caption{Eine Tabelle}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}*8l@{}} \toprule
Spalte1 & Spalte2 & Spalte3 & Spalte4 & Spalte5 & Spalte6 & Spalte7 & Spalte8 \\ \midrule
AA & BB & CC & DD & EE & FF & GG & HH \\
AA & BB & CC & DD & EE & FF & GG & HH \\ \bottomrule
\end{tabular*}
\end{table}
\noindent\rule{\textwidth}{1pt}
Die Textbreite entspricht der Linie über diesem Text.
\end{document}
Dabei habe ich außerdem den Wiederholungsoperator `*` in der Spaltendeklaration verwendet.
Wollte man den Abstand nur zwischen den mittleren 6 Spalten verwenden, ginge das per
\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\begin{document}
\begin{table}[htb]
\caption{Eine Tabelle}
\begin{tabular*}{\linewidth}{@{}l@{\extracolsep{\fill}}*6l@{\extracolsep{0pt}\hskip2\tabcolsep}l@{}} \toprule
Spalte1 & Spalte2 & Spalte3 & Spalte4 & Spalte5 & Spalte6 & Spalte7 & Spalte8 \\ \midrule
AA & BB & CC & DD & EE & FF & GG & HH \\
AA & BB & CC & DD & EE & FF & GG & HH \\ \bottomrule
\end{tabular*}
\end{table}
\noindent\rule{\textwidth}{1pt}
Die Textbreite entspricht der Linie über diesem Text.
\end{document}
Ob im jeweiligen Fall eher `tabularx` oder `tabular*` das Mittel der Wahl ist, hängt von der konkreten Anwendung ab.
[1]: http://www.ctan.org/pkg/tabularx