You were starting paragraphs in the vboxes so they were line breakingtobreaking to \hsize.
Unrelated but you had % on lines where they were not needed and not where therthey are.
\parindent=0pt
Dies ist ein Beispiel. \vskip\baselineskip
\hrule
\vskip\baselineskip
\def\text {ein Beispiel. Dies ist ein Beispiel. Ein Text, wie ihn jeder schreiben kann, aber kein Blindtext, und auch kein Text, der immer wieder herein kopiert wird. }
\raggedright
\input miniltx.tex
\input graphicx.tex
\newdimen\picheight
\newdimen\picwidth
\newdimen\beforepicwidth
\newdimen\afterpicwidth
\newdimen\columnsep
\columnsep=14pt
\def\centerpic[#1,#2,#3,#4,#5]{%
\def\overpic{\vtop{\hsize\picwidth #1\vfill}}%
\def\beforepic{\vtop{\hsize\beforepicwidth #2 \vfill}\hskip\columnsep}%
\def\pic{\vtop{\overpic \vskip\baselineskip \hbox{\includegraphics[width=\picwidth,keepaspectratio,]{#3}}\vskip\baselineskip\underpic}\hskip\columnsep}%
\def\afterpic{\vtop{\hsize\afterpicwidth #4}}%
\def\underpic{\vtop{\hsize\picwidth #5\vfill}}%
\vtop{%
\picheight=16pt %height of picture not needed with aspectratio
\picwidth=120pt %width of picture
\beforepicwidth=\picwidth
\afterpicwidth=\picwidth
\vskip0.1\baselineskip
\hbox{%
\beforepic
\pic
\afterpic
}}\vskip\baselineskip}%
\centerpic[\text,\text,example-image,1\text,2\text]%
\vskip\baselineskip
\hrule
\vskip\baselineskip
Dies ist ein Beispiel.
\bye
