Das ist ein altbekanntes Problem mit Paketen, die via `\AtEndDocument` explizit ein `\clearpage` ausführen. Sowohl `scrlfile` als auch `atveryend` bieten dafür seit vielen Jahren Alternativlösungen, nämlich die Ausführung von Code nach dem letzten `\clearpage` innerhalb von `\AtEndDocument`. Leider gibt es noch immer Pakete wie `lastpage`, die davon keinen Gebrauch machen, obwohl sie es gut gebrauchen konnten. Eventuell würde es helfen, wenn möglichst viele Anwender, das Problem dem jeweiligen Paketautoren melden.
Jedenfalls ist die Lösung einfach: Verzicht auf `lastpage` und Implementierung der benötigten Funktionalität mit Hilfe von einem der beiden genannten Pakete. Da `scrlfile` auch `\protected@write` innerhalb von `\AtEndDocument` durch eine `\immediate`-Version ersetzt, ist es damit recht einfach:
\begin{filecontents}{meineklasse.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{meineklasse}
\LoadClass{article}
\RequirePackage{scrlayer-scrpage}% In Klassen verwendet man \RequirePackage
% statt \usepackage.
\BeforeClosingMainAux{%
\addtocounter{page}{-1}% Nach der letzten Seite, also Zähler korrigieren.
\label{LastPage}%
}
\renewcommand*{\pagemark}{{\usekomafont{pagenumber}{\pagename~\thepage~\ofname~\pageref{LastPage}}}}
\providecaptionname{english}{\pagename}{Page}
\providecaptionname{english}{\ofname}{of}
\providecaptionname{ngerman,german,nswiss,swiss,naustrian,austrian}{\pagename}{Seite}
\providecaptionname{ngerman,german,nswiss,swiss,naustrian,austrian}{\ofname}{von}
\end{filecontents}
\documentclass{meineklasse}
\usepackage{blindtext}
\AtEndDocument{Text am Ende des Dokuments (soll nicht auf einer neuen Seite stehen)}
\begin{document}
\blindtext
\end{document}
Wie du siehst, ist hier jetzt ggf. noch nicht einmal der letzte Absatz beendet.beendet, bevor der Code aus `\AtEndDocument` ausgeführt wird.