Wie @huibub bereits korrekt in Kommentaren erwähnt hat, geht es hier nicht um den Seitenrand, sondern um den Abstand, der in der Voreinstellung vor Überschriften eingefügt wird. Wie von @huibub erklärt, stimmt es also nicht, dass aber dem Inhaltsverzeichnis der obere Rand verändert ist. Reine Textzeilen beginnen auf Seiten nach dem Inhaltsverzeichnis an genau derselben Stelle wie auf Seiten vor dem Inhaltsverzeichnis. Ich werde zur Verdeutlichung dieses Umstandes eine solche in mein Beispiel unten anfügen.
Wie @huibub ebenfalls korrekt erwähnt hat, hat [@esdd bereits @esdd [bereits früher gezeigt](https://texwelt.de/fragen/10519/wie-andere-ich-die-abstande-uberunter-der-uberschrift-von-toc-lof-lot/10524), wie man diesen Abstand vor Überschriften auch der Verzeichnisse verändern kann. Die von @huibub konkret angegebenen Werte können ebenfalls durchaus annehmbar sein (ein paar – aber nicht alle – für das Problem überflüssige Pakete entfernt):
\documentclass[12pt,toc=listof]{scrreprt}% a4paper ist Voreinstellung und damit überflüssig
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}% Seit LaTeX 2018/04/01 überflüssig.
\usepackage[ngerman]{babel}
\usepackage{lmodern}
\usepackage[showframe, left=2.5cm, right=2.5cm, top=2.5cm, bottom=2cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\RedeclareSectionCommand[beforeskip=-\topskip,afterindent=false]{chapter}
\begin{document}
Dies ist ein Text.
\tableofcontents
\listoffigures
\listoftables
\chapter{Überschrift}
\clearpage
Das ist wieder ein Text.
\end{document}
Wie man allerdings in diesem Beispiel an der letzten Überschrift sehen kann, kann es dabei passieren, dass Oberlängen wie Akzente oder Umlautpünktchen über den Textbereich hinaus ragen.
Was Laien oft nicht verstehen ist, dass man bei Text nicht die Oberkante festlegt, sondern die Grundlinie. Anderenfalls würden die Zeilen abhängig vom Inhalt *hüpfen*. Deshalb ist es eigentlich unsinnig, die Zeilen an der Oberkante des tatsächlichen Inhalts ausrichten zu wollen. Deshalb ragt eben im Beispiel die Zeile mit den Umlautpünktchen weiter nach oben, ist aber nach unten korrekt ausgerichtet. Erschwerend kann übrigens hinzu kommen, dass Zeichen auch über ihre eigene definierte Höhe hinaus ragen können (übrigens auch unter oder links oder rechts aus ihrer *Zelle*). Gerne hat man auch, dass ein `O` oder `A` physisch etwas höher ragt, als beispielsweise ein `T`, um optisch gleiche Höhe zu erreichen. Bei Schmuckschriften können auch Kringel höher ragen. Hätte man eine solche Schrift im Einsatz, hätte TeX keine Chance, das zu erkennen, weil TeX keine Glyphen analysiert, sondern nur rechteckige Boxen kennt.
Natürlich kann man in obigem Beispiel statt `-\topskip` auch einen kleineren Wert einsetzen, damit der Umlaut mit der Oberkante abschließt. Dann stehen eben die Überschriften ohne Umlaut ebenfalls etwas tiefer und schließen oben nicht bündig ab. Wie dargestellt ist das Verhalten aber korrekt, auch wenn Laien hier erst einmal etwas anderes vermuten mögen.
Übrigens kann es durch Verwendung von `\usepackage[onehalfspacing]{setspace}` tatsächlich dazu kommen, dass der obere Rand automatisch verändert wird. Durch die Vergrößerung des Durchschusses kann nämlich die Kopfhöhe zu gering ausfallen. Einige Seitenstilpakete erkennen das und korrigieren das optional oder auch in der Voreinstellung. Beispielsweise beim Paket `scrlayer-scrpage` gibt es aber die Möglichkeiten, per Option `singlespacing` Kopf und Fuß einzeilig zu setzen oder per Option `autoenlargeheadfoot=false` die automatische Veränderung der Kopfhöhe generell zu verhindern.