I like using the merge because it keeps everything together and limits the use of temp or staging tables.
I have an application using a database that pulls updated inventory information every 30-minutes from another server.
The easiest (least sophisticated) solution is to delete the existing data then repopulate the entire table. This sucks for several reasons. Some of the biggest are that users can view a report between this delete and insert and get no data, if something goes wrong with the data pull then I've lost all your data, and I am updating 250,000 records when I only need to update 5,000 or so.
A better solution is to use an insert and an update statement (delete is not necessary in my case). But doing this usually requires a temporary table, table parameter, or a staging table. I hate using all three of those and avoid them whenever I can.
The MERGE statement is nice because I can perform the insert and update while only needing to pull the source data once. The syntax looks crazy, but it's not bad at all after you write a few.
As far as the comment about not wanting to use vendor-specific syntax, well I just can't see it that way. I don't see much that is not vendor-specific. Sure, the MERGE is very different from what is in other databases, and it may stand out. However, it's not like anything moves from one platform to another without every single thing absolutely breaking in every significant way that just makes it easier to start from scratch anyways. Well, that's my personal experience at least. Each database type, MS SQL, MySQL, Oracle, DB2, Informix, etc...They all have their own special syntax rules (like SELECT TOP 1 is different in every freaking database it seems), functions, optimization techniques, and so on. It's not like a MERGE here and there is what is going to kill you on those conversions, you'll be dead long before you deal with rewriting the MERGE statements.