Du Da Du nur ein optionales Argument benötigst, kannst Du auch einfach die Reihenfolge der Argumente ändern.
Dabei würde ich dann als Voreinstellung des optionalen Arguments auch nicht `.5`, sondern `width=.5\textwidth` wählen. Das hat den Vorteil, dass Du bei Nutzung des Befehls auch anderen Schlüsseln von `\includegraphics` Werte zu weisen kannst, also beispielsweise statt der Breite mal die Höhe vorgeben kannst.
    \documentclass{article}
    \usepackage{graphicx}
    \newcommand\insImage[4][width=.5\textwidth]{%
      \begin{figure}[hbt]
        \centering
        \includegraphics[#1]{#2}
        \caption{#3}
        \label{fig:#4}
      \end{figure}%
    }
    \begin{document}
    \insImage{example-image-a}{Example Image A}{ex-a}
    \insImage[width=5cm]{example-image-b}{Example Image B}{ex-b}
    \insImage[height=1cm]{example-image}{Example Image C}{ex-b}
    \end{document}