I wonder if some of the confusion is from people transitioning from Oracle PL/SQL and other compiled languages where the language is much more sophisticated and clear.
CREATE/BEGIN/END have clear syntactical and semantic roles in PL/SQL. In fact, the END statement includes the name of the procedure or function that is being defined.
SUB/END SUB and FUNCTION/END FUNCTION in VB.NET are also very clear.
T-SQL still seems like a toy language compared to others for this and some other reasons.
--Peter