Lasse die Klammern um das dritte Argument weg:
    \newcommand{\startstop}[3]{\node ({#1}) [startstop, #3] {#2};}
Ich würde außerdem den Stil mit `\tikzset` definieren. `\tikzstyle` gilt offiziell als veraltet.
    \documentclass{standalone}
    \pagestyle{empty}
    
    \usepackage[utf8]{inputenc}
    \usepackage{tikz}
    
    \tikzset{
      startstop/.style = { % Start Stop Shape
        rectangle, rounded corners,
        minimum width=3cm, minimum height=1cm,
        text centered, text width=3cm,
        draw=black, fill=red!30
      }
    }
    
    \newcommand{\startstop}[3]{\node ({#1}) [startstop, #3] {#2};}
    
    \begin{document}
        \begin{tikzpicture}[node distance=2cm, auto]    
            \node (node0) [startstop] {Start};
            \node (node1) [startstop, below of=node0] {Text};   
            \startstop{node2}{Textinhalt}{below of=node1}   
        \end{tikzpicture}
    \end{document}\end{document}
----------
Anmerkung: mit der jetzigen Definition
    \newcommand{\startstop}[3]{\node ({#1}) [startstop, #3] {#2};}
kann man nicht mehr ohne weiteres eckige Klammern in `#3` verwenden.  Eine bessere Definition wäre daher
    \newcommand{\startstop}[3]{\node ({#1}) [{startstop, #3}] {#2};}
Beim Auslesen des Arguments, das der eckigen Klammer folgt wird im Prozess dann dieses äußere Paar eckiger Klammern entfernt. Danke an @saputello für den Hinweis.