Метаданные не отображаются в макроэкспанде, поскольку они должны быть «невидимыми».
Если макрос верный (а это не так), вы должны быть в состоянии вызвать (meta # 'db-host-option) для проверки метаданных в переменной.
Обратите внимание, что (def sym ...) вставляет метаданные в переменную, полученную из символа.Но ^ Tag ~ name устанавливает метаданные для ~ name (имя без кавычек), а не для переданного символа, связанного с name.Он не может делать ничего другого, поскольку ^ Tag ... обработка выполняется читателем, который уже завершен после запуска макроса.
Вам нужно что-то вроде
(defmacro def-string [name value]
`(def ~(with-meta name {:tag String}) ~value))
user> (def-string bar 1)
#'user/bar
user> (meta #'bar)
{:ns #<Namespace user>, :name bar, :file "NO_SOURCE_FILE", :line 1, :tag java.lang.String}