Oi Ederson,
é por causa do jeito que está estruturado o seu segundo loop.Se vc olhar isoladamente para o seu segundo bloco de código:
for permissao in permissoes:
if permissao == True:
print(f'{idade} anos, pode dirigir)
else:
print(f'{idade} anos, não pode dirigir)
vc está chamando a variável idade, mas não está percorrendo ela em qualquer momento desse loop.Na verdade esse '18' que está mostrando, deve ser de alguma variável que vc tinha testado antes no seu notebook e simplesmente manteve o valor.Tenta assim:
for i, permissao in enumerate(permissoes):
if permissao == True:
print(f'{idades[i]} anos, pode dirigir)
else:
print(f'{idades[i]} anos, não pode dirigir)
O enumerate() apenas faz com que seu loop agora tenha também um valor que vai de zero até o tamanho máximo do seu iterador.
E como permissao e idades tem o mesmo comprimento, vc consegue usar o índice do iterador em enumerate(permissoes) para achar a posição correta em idades.