`\vskipnextgrid` funktioniert eigentlich nur im vertikalen Modus. Hier befindest du dich aber nicht im vertikalen Modus. `gidset` muss deshalb in den vertikalen Modus wechseln, den vertikalen Abstand erzeugen und dann wieder zurück in den horizontalen Modus. Dabei geht normalerweise die horizontale Position verloren. Um die wieder zu erreichen, wird über die `aux`-Datei auch diese vor dem Wechsel in den vertikalen Modus gespeichert und dann per `\hskip` angesteuert. Es wird aber nicht berücksichtigt, dass du dich hier in der zweiten Spalte befindest. Dadurch wird um den Wert der Breite der ersten Spalte plus dem Abstand zwischen den Spalten zu weit nach rechts gesprungen.
Ab Version 0.3 ist das Problem [laut commit-Message](https://github.com/komascript/gridset/commit/82c5422d3190e0c74b746d63d732e078c6e2c744) wohl behoben.
Durch eine Änderung in `\vskipgridset` kann man das auch für frühere Versionen korrigieren:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{gridset}
\makeatletter
\@ifpackagelater{gidset}{2020/02/10}{}{% Nur für ältere Versionen ändern.
\renewcommand*{\vskipnextgrid}{%
\begingroup
\stepcounter{gridcnt}\edef\@tempa{vp!\thegridcnt}%
\ifvmode
\leavevmode\savepos{\@tempa}%
\expandafter\ifx\csname pos@\@tempa @vskip\endcsname\relax
\else
\expandafter\ifnum \csname pos@\@tempa @vskip\endcsname =\z@\else
\PackageInfo{gridset}{%
vmode \string\vskip\csname pos@\@tempa @vskip\endcsname sp%
}%
\vskip -\parskip\vskip -\baselineskip
\expandafter\vskip\csname pos@\@tempa @vskip\endcsname sp\relax
\fi
\fi
\else
\parskip=\z@
\savepos{vp!\thegridcnt}%
\expandafter\ifx\csname pos@\@tempa @vskip\endcsname\relax
\else
\expandafter\ifnum \csname pos@\@tempa @vskip\endcsname =\z@\else
\PackageInfo{gridset}{%
hmode \string\vskip\csname pos@\@tempa @vskip\endcsname sp%
}%
\vskip -\baselineskip
\expandafter\vskip\csname pos@\@tempa @vskip\endcsname sp\relax
% Ab hier haben wir nun die Änderung, dass nicht mehr direkt
% \leavevmode\hskip … aufgerufen wird, sondern der Wert für den
% \hskip wird erst einmal in \@tempdima gespeichert …
\if@twoside
\expandafter\ifodd\csname pos@\@tempa @page\endcsname\relax
\@tempdima\dimexpr - 1in - \oddsidemargin - \parindent
+ \csname pos@\@tempa @x\endcsname sp\relax
\else
\@tempdima\dimexpr - 1in - \evensidemargin - \parindent
+ \csname pos@\@tempa @x\endcsname sp\relax
\fi
\else
\@tempdima\dimexpr - 1in - \oddsidemargin - \parindent
+ \csname pos@\@tempa @x\endcsname sp\relax
\fi
% … und in der zweiten Spalten eines zweispaltigen Textes wird er
% dann um die Spaltenbreite + den Spaltenabstand korrigiert …
\if@twocolumn\if@firstcolumn\else
\addtolength{\@tempdima}{-\columnwidth}\addtolength{\@tempdima}{-\columnsep}%
\fi\fi
% … und erst dann erfolgt wieder das \leavevmode\hskip …
\leavevmode\hskip\@tempdima
\fi
\fi
\fi
\endgroup
}
}
\makeatother
\begin{document}
\twocolumn
\blindtext[3]
\[
y = x^2
\]
\vskipnextgrid
Nun kommt weiterer Text.
\end{document}
[![Ergebnis mit korrekter horizontaler Position][1]][1]
Das nützt zwar nichts für dein Buch, aber ist vielleicht trotzdem für den einen oder anderen nützlich. Allerdings sollte man die Änderung natürlich nur vornehmen, wenn man sicher ist, dass der Code in `gridset` unverändert ist.
[1]: https://texwelt.de/upfiles/test_20200211_181650.png