Отвечаю на вопрос: «где собака зарыта?»
[[++site_url]] возвращает строку из системной настройки с ключом site_url, если такая задана. Если не задана, то берет сформированную строку из файла config.inc.php. Вы правильно поняли, что MODX_BASE_URL в Вашем случае (и для большей части сайтов) добавляет в строку слеш на конце.
[[~[[*id]]]] возвращает строку с адресом страницы, сформированном по схеме, указанной в системной настройке с ключом link_tag_scheme.
По ссылке можно прочитать про данную настройку. Там не сказано только одного, что у главной страницы обязательно будет слеш. И это правильно, так как при формировании ссылки без доменного имени для главной страницы не считая слеша не остается больше ничего.
Если Вы хотите оставить тот вариант, который есть в Вашем ответе, но еще убрать слеш на конце у главной страницы, то можно сделать такой код:
<link rel="canonical" href="[[++site_url]][[*id:ne=`[[++site_start]]`:then=`[[~[[*id]]]]`]]">