lsof sem argumentos fornece as informações para todos os segmentos de cada processo.
Enquanto lsof -p "$pid" apenas lista arquivos abertos para o processo.
Para obter o mesmo número, você precisa:
lsof -aKp "$pid"
Observe também que lsof não lista apenas arquivos abertos em descritores de arquivos, ele também lista arquivos mmap (como visto em /proc/*/task/*/maps ), o diretório de trabalho atual (como visto em /proc/*/task/*/cwd ), o diretório raiz (%código%).