file-truename も directory-file-name も先頭を小文字にする仕様みたいだから
どうせ揃えるなら小文字に揃えたほうがシンプルになるんじゃないかな?
add-to-list するときに追加する要素に対しても directory-file-name してやればいいわけだし。

;; 先頭小文字/最後のスラッシュはなしのケース
(setq exec-path (mapcar #'directory-file-name exec-path))

;; 先頭大文字/最後のスラッシュはなしのケース
(setq exec-path (mapcar (lambda (p)
(setq p (directory-file-name p))
(aset p 0 (upcase (aref p 0)))
p
)
exec-path))