I'm not so sure there is a "semantic contract" for comment blocks since they're made available via reflection. Comments are metadata after all.
And this is more akin to annotations/attributes ala python, java, C#. C++ doesn't have any feature that is approximate by virtue that annotations are aspects of reflection and C++ doesn't have reflection.
1) it's more DRY because for external files to say something about a construct in code there is repeated information, i.e. <route><to><class>Foo</class><method>bar</method></to><from><method>GET</method><url>some/url/here</url></to></route>,
2) because you're using the PHP language to specify metadata about a PHP construct refactoring is easier, i.e. change the name of a function and you don't have to go update your routing somewhere else,
3) having the metadata inline with code turns out to be mentally lightweight once you get over the initial shock of seeing metadata in a comment.