Проблема возникает из-за того, что вызов 
askdirectory() блокирует выполнение программы до тех пор, пока пользователь не выберет папку. Однако в вашем коде используется асинхронный JavaScript, поэтому нужно использовать асинхронную версию 
askdirectory().
Для этого можно использовать библиотеку 
aioify для превращения синхронных функций в асинхронные. Также нужно обновить метод 
downdir() для использования асинхронной версии 
askdirectory().
from tkinter.filedialog import askdirectory
from getpass import getuser
import eel
from aioify import aioify
eel.init("web")
downloadsPath = f"C:/Users/{getuser()}/Downloads"
# Превращаем функцию askdirectory() в асинхронную
async_askdirectory = aioify(askdirectory)
@eel.expose
async def downdir():
    # Используем асинхронную версию askdirectory()
    path = await async_askdirectory()
    return path
@eel.expose
def defaultPath():
    return downloadsPath
eel.start("index.html", size=(500, 800), mode="chrome")
async function defaultPath(){
    let path = await eel.defaultPath()();
    document.getElementById('tpd').textContent = path;
}
defaultPath();
async function downloadsDir(){
    let dpath = await eel.downdir()();
    return await dpath;
}
document.querySelector('#dl').onclick = async () => {
    let path = await downloadsDir();
    document.getElementById('tpd').textContent = path;
    console.log("+")
}
Теперь вызов 
askdirectory() не блокирует выполнение программы, и вы можете выбрать папку в диалоговом окне.