Most* dialogs, including ShowMessage, are modal in most/all widgetsets. Even if they "return" nothing, like ShowMessage
If you want a modeless ShowMessage you'll have to build it yourself, I fear. It's not very difficult, though.
Whether the behaviour of ShowMessage in Carbon shold be considered a bug, a widgetset quirk or "how-it-should-be" is a question I'll leave to deeper minds than mine
* Notable, but logical, exceptions are TFindFialog and TReplaceDialog