O fragmento $(basename {}) é analisado pelo seu shell antes de find ser executado. O resultado é {} . É por isso que os dois comandos são os mesmos.
Para que funcione como você queria, você pode gerar outro shell que manipulará $() sozinho. Citar com '' impede que o shell externo processe $() :
find -name "*pdf" -exec sh -c 'echo $(basename {})' \;