Я тоже столкнулся с такой проблемой.
В курсах "разработчик" на этом не акцентировано внимание. Просто написано: "Особенностью создания функций-агентов является то, что в качестве возвращаемого значения функция-агент должна вернуть PHP код, который будет использован при следующем запуске данной функции."
Насколько я понял CSiteMap::Create("s1",array(30,3000), array()) после первого успешного выполнения вернет просто логическое true, а надо чтобы возвращала саму себя. Т.к. true не является " PHP кодом, который будет использован при следующем запуске данной функции." битрикс просто удаляет этот агент.
Вот тут есть примеры правильного создания агентов:
http://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=2290