We need to think about why someone (admittedly, like myself) would make a habit of prepending the WITH statement of a CTE with a semi-colon. For me it's because I like that Microsoft doesn't require every statement to have a semi-colon terminator. Since I like that it's not required I'm not keen on the idea of adding them to the end every statement just to satisfy the few cases where it's needed. Therefore when I encounter syntax that Microsoft couldn't or wouldn't avoid the necessity like a CTE definition or a THROW statement etc. I add the semi-colon to be included with the code that needs it.
We could say, "Well since a MERGE statement must be semi-colon terminated and a CTE must be the first statement or the previous statement must be terminated, we should now terminate every statement to avoid issues in these cases where it is required." That is a valid reason for making that the standard. Such a standard would go against my personal preferences since I don't like the statement terminator nor do I like languages that require it (I'm sneering at you Oracle). However, that's not a good enough reason to ditch a standard.
We need to be careful here though. That same logic leads us to other conclusions. Take for instance the optional syntax of enclosing identifiers in brackets "" (tables, columns, logins etc.). Since there are plenty of cases where brackets are required in order to keep things from breaking it's easy to conclude that we should make it standard to use brackets where ever the option is afforded. That's another topic that has very passionate and differing opinions.
IMO, if your coding standards require you to use semi-colon statement termination keep doing that at the end of statements and this is a non-issue for you. If your coding standards do not require statement termination put the semi-colon with the statements that require it. Either in the front, like in a CTE, or at the end, like in a MERGE.