TeX trennt nie das erste Wort eines Absatzes. Das Standardmittel dagegen ist, ein `\hspace{0pt}` davor zu setzen. Dadurch beginnt der Absatz mit einem horizontalen Skip der Länge Null und es wird ein _break point_ eingefügt, was im Endeffekt bedeutet, dass das erste Wort von TeX nicht als das erste Wort wahrgenommen wird. Das Einfügen einer `\mbox{}` nützt an dieser Stelle nichts. Ich bin mir nicht sicher warum, nehme aber an, dass es daran liegt, dass die `\mbox{}` noch keinen _break point_ einfügt.
Für Tabellen gibt es durch das [`array`](http://www.ctan.org/pkg/array)-Paket eine bequeme Möglichkeit, das `\hspace{0pt}` in jeder Zelle der `p{}`-Spalte an den Anfang zu setzen: mit der `>{<code>}` Syntax in der Spalten-Deklaration. Damit wird `<code>` vor jede Zelle der folgenden Spalte eingefügt:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{array}
\begin{document}
\begin{tabular}{|p{2.1cm}|}
\hline
\hspace{0pt}Personalcomputer \\
\hline
Ein Personalcomputer \\
\hline
\end{tabular}
\begin{tabular}{|>{\hspace{0pt}}p{2.1cm}|}
\hline
\hspace{0pt}Personalcomputer \\
\hline
Ein Personalcomputer \\
\hline
\end{tabular}
\end{document}
![alt text][1]
![Ergebnis][1]
Noch bequemer ist es vielleicht, einen neuen Spaltentyp dafür zu definieren:
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{array}
\newcolumntype{P}[1]{>{\hspace{0pt}}p{#1}}
\begin{document}
\begin{tabular}{|P{2.1cm}|}
\hline
Personalcomputer \\
\hline
Ein Personalcomputer \\
\hline
\end{tabular}
\end{document}
[1]: http://i.imgur.com/hBSYW2x.png