Erzwingen kann man eine Spaltenbreite, wie bereits oben erwähnt, per Option:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,lmargin={2.5cm},rmargin={2.5cm},tmargin={3cm},bmargin = {3cm}]{geometry}
\usepackage{rotating}
\usepackage{booktabs}
\usepackage{array}
\usepackage{siunitx}
\sisetup{input-symbols = ()}
\begin{document}
\begin{sidewaystable}
\centering
\caption{XYZ}
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\sisetup{table-space-text-post = \sym{***}}
\begin{tabular}{l*{8}{S[table-align-text-post=false,table-column-width=1.9cm]}}\\
\hline
& 2007 & 2008 & 2009 & 2010 & 2011 & 2012 & 2013 & 2014 \\
\hline
a & -25,51\sym{***} & -17,14\sym{***} & -26,95\sym{***} & -17,92\sym{***} & -25,00\sym{***} & -14,19\sym{***} & -65,98\sym{***} & -89,15\sym{***} \\
b & -19,13\sym{***} & -24,98\sym{***} & -90,50\sym{***} & -55,70\sym{***} & {-66,07}\sym{***} & -54,80\sym{***} & -76,43 & -14,00\sym{*} \\
c & {n.a.} & -49,89 & 130,72 & -120,86 & 59,63 & -29,37 & 12,85 & -34,76 \\
d & -21,79\sym{***} & -27,71\sym{***} & -79,04\sym{***} & -78,42\sym{***} & -28,10\sym{***} & -55,47\sym{***} & -76,03 & -78,07 \\
e & {n.a.} & -34,44\sym{***} & -36,19\sym{**} & -45,28\sym{***} & {-19,18} & -12,38\sym{***} & -15,67 & -57,98 \\
\bottomrule
\end{tabular}%
\label{tab:XYZ}
\end{sidewaystable}
\end{document}
Natürlich sind für die verwendeten 8-Zahlenspalten auch 8 ſ-Spalten zu deklarieren und nicht nur 4. Alles überflüssige habe ich zwecks Übersichtlichkeit gemäß
Minimalbeispiel-Anleitung aus der Dokumentpräambel rausgeworfen.
Ein Problem ergibt sich hier aus den Zahlen, die Du in geschweifte Klammern gesetzt hast, beispielsweise {-66.07}. Diese werden nämlich nicht als Zahl, sondern als Text behandelt! Die störenden Klammen sollten also entfernt werden. Ich vermute außerdem, dass die Ausgabe für Deutsch mit Komma erfolgen soll, also wäre es sinnvoll locale=DE zu setzen. Man landet dann bei:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,lmargin={2.5cm},rmargin={2.5cm},tmargin={3cm},bmargin = {3cm}]{geometry}
\usepackage{rotating}
\usepackage{booktabs}
\usepackage{array}
\usepackage{siunitx}
\sisetup{locale=DE}
\begin{document}
\begin{sidewaystable}
\centering
\caption{XYZ}
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\sisetup{table-space-text-post = \sym{***}}
\begin{tabular}{l*{8}{S[table-align-text-post=false,table-column-width=1.9cm]}}\\
\hline
& 2007 & 2008 & 2009 & 2010 & 2011 & 2012 & 2013 & 2014 \\
\hline
a & -25,51\sym{***} & -17,14\sym{***} & -26,95\sym{***} & -17,92\sym{***} & -25,00\sym{***} & -14,19\sym{***} & -65,98\sym{***} & -89,15\sym{***} \\
b & -19,13\sym{***} & -24,98\sym{***} & -90,50\sym{***} & -55,70\sym{***} & -66,07\sym{***} & -54,80\sym{***} & -76,43 & -14,00\sym{*} \\
c & {n.a.} & -49,89 & 130,72 & -120,86 & 59,63 & -29,37 & 12,85 & -34,76 \\
d & -21,79\sym{***} & -27,71\sym{***} & -79,04\sym{***} & -78,42\sym{***} & -28,10\sym{***} & -55,47\sym{***} & -76,03 & -78,07 \\
e & {n.a.} & -34,44\sym{***} & -36,19\sym{**} & -45,28\sym{***} & -19,18 & -12,38\sym{***} & -15,67 & -57,98 \\
\bottomrule
\end{tabular}%
\label{tab:XYZ}
\end{sidewaystable}
\end{document}
Auch hier gibt es noch Fehler in der Formatierung, die daraus resultieren dürften, dass die 1.9cm für einen zentrierten Punkt einfach zu wenig sind. Also fügen wir noch ein passendes Zahlenformat hinzu:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,lmargin={2.5cm},rmargin={2.5cm},tmargin={3cm},bmargin = {3cm}]{geometry}
\usepackage{rotating}
\usepackage{booktabs}
\usepackage{array}
\usepackage{siunitx}
\sisetup{locale=DE}
\begin{document}
\begin{sidewaystable}
\centering
\caption{XYZ}
\def\sym#1{\ifmmode^{#1}\else\(^{#1}\)\fi}
\sisetup{table-space-text-post = \sym{***}}
\begin{tabular}{l*{8}{S[table-align-text-post=false,table-column-width=1.9cm,table-format=4.2]}}\\
\hline
& 2007 & 2008 & 2009 & 2010 & 2011 & 2012 & 2013 & 2014 \\
\hline
a & -25,51\sym{***} & -17,14\sym{***} & -26,95\sym{***} & -17,92\sym{***} & -25,00\sym{***} & -14,19\sym{***} & -65,98\sym{***} & -89,15\sym{***} \\
b & -19,13\sym{***} & -24,98\sym{***} & -90,50\sym{***} & -55,70\sym{***} & -66,07\sym{***} & -54,80\sym{***} & -76,43 & -14,00\sym{*} \\
c & {n.a.} & -49,89 & 130,72 & -120,86 & 59,63 & -29,37 & 12,85 & -34,76 \\
d & -21,79\sym{***} & -27,71\sym{***} & -79,04\sym{***} & -78,42\sym{***} & -28,10\sym{***} & -55,47\sym{***} & -76,03 & -78,07 \\
e & {n.a.} & -34,44\sym{***} & -36,19\sym{**} & -45,28\sym{***} & -19,18 & -12,38\sym{***} & -15,67 & -57,98 \\
\bottomrule
\end{tabular}%
\label{tab:XYZ}
\end{sidewaystable}
\end{document}
Jetzt werden vier Stellen vor dem Komma und zwei danach reserviert. Das Komma ist nicht mehr in der Spaltenmitte. Die Formatierung ist einheitlich.