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}