Du verwendest genau genommen `\csvreader` in der ersten Spalte einer Tabellenzeile. Das ist generell problematisch. Das gilt umso mehr, wenn man auf `\catcode`-Änderungen angewiesen ist. `csvsimple` sieht daher vor, dass man Tabellen durch die Verwendung von `tabular` (oder `longtable` o. ä.) festlegt. Da es keinen `tabularx`-Stil gibt und er aufgrund der Besonderheiten von `tabularx` nicht so einfach definiert werden kann, wäre die Verwendung einer festen Spaltenbreite für die letzte Spalte eine Notlösung:
\documentclass{scrartcl}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}% utf8x bereitet teilweise Probleme
\usepackage[T1]{fontenc}
\usepackage{booktabs}
%\usepackage{tabularx}% für dieses Beispiel nun überflüssig
\usepackage{csvsimple}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
00:00: 0.0,MALFUN,Failure of ACC-1/CL (1 = FAILED) (param.: 1)
,MALFUN,Failure of ACC-1/HL (1 = FAILED) (param.: 1)
,MALFUN,Failure of ACC-2/CL (1 = FAILED) (param.: 1)
,MALFUN,Failure of ACC-2/HL (1 = FAILED) (param.: 1)
,MALFUN,Failure of ACC-3/CL (1 = FAILED) (param.: 1)
,MALFUN,Failure of ACC-3/HL (1 = FAILED) (param.: 1)
,MALFUN,Small break in CL-2 (max 100 cm**2) (Break 70% open)
,MALFUN,HP injection pump TH25 (failure to run)
,MALFUN,HP injection pump TH35 (failure to run)
,MALFUN,HP injection pump TH45 (failure to run)
,MALFUN,LP injection pump TH20 (failure to run)
,MALFUN,LP injection pump TH30 (failure to run)
,MALFUN,LP injection pump TH40 (failure to run)
,MALFUN,LP injection pump TH17 (failure to run)
,MALFUN,LP injection pump TH37 (failure to run)
00:00: 0.7,EVENT,RCS voiding starts in Core
00:00: 2.0,SIGNAL,Containment Pressure > 1.03 bar
,SIGNAL,Reactor SCRAM initiation
00:00: 5.1,SIGNAL,Turbine Trip (TSV close)
00:00: 5.1,SYSTEM,VALVE TSV : started to CLOSE from fully open position
00:00: 6.4,SYSTEM,VALVE 0TA11S004 : started to OPEN from fully closed position
00:00: 8.1,SYSTEM,VALVE TSV : fully CLOSED
00:00: 9.5,SIGNAL,Pressurizer Pressure < 133.0 bar
00:00:13.0,SYSTEM,VALVE 0TA11S004 : fully CLOSED
\end{filecontents*}
\newlength{\lastcolumn}
\begin{document}
\settowidth{\lastcolumn}{9900:00:00.0MALFUN}
\setlength{\lastcolumn}{\dimexpr \textwidth-8\tabcolsep-\lastcolumn\relax}
\csvreader[tabular=lllp{\lastcolumn},
table head = \toprule & \textbf{Zeit} & \textbf{Typ} &
\textbf{Beschreibung}\\\midrule,
table foot = \bottomrule,
respect all,
late after line=\\,
late after last line=\\\bottomrule]%
{data.csv}%
{}%
{\thecsvrow & \csvcoli & \csvcolii & \csvcoliii}
\end{document}
![Ergebnis mit p-Spalte][1]
Natürlich könnte man die CSV-Daten auch zunächst einmal einlesen, um statt mit einem festen Muster die tatsächliche Maximalbreite der vorderen Spalten zu ermitteln. Eventuell wäre für solche Dinge dann [`datatool`](https://ctan.org/pkg/datatool) besser geeignet. Wenn an man halbwegs eine Ahnung von den zu erwartenden Daten hat, ist die Lösung mit einem Datenmuster wie oben gezeigt aber einfacher und gangbar.
[1]: http://texwelt.de/wissen/upfiles/test_20171204_113625.png