file-nr keeps the information about the number of "open file descriptors" that are "handles" to open files. But there might be open files that do not have handles. Hence, the difference.
Take for example the output
bash-3.2# cat /proc/sys/fs/file-nr
704 0 8192
-bash-3.2# lsof | wc -l
Here, total number of files open are 1140, while only 704 of these have file descriptors (handles)
Hope it helps. Cheers!