A test with the POSIX S_ISREG macro on HISTFILE will determine if it, or the file it points to in the case of a symlink, is a regular file.
Just looked through the source, and it looks like general.c:file_exists() does not do any special handling of non-regular files, and lib/readline/histfile.c:history_do_write() calls open() and rename() on HISTFILE without checking if it is a non-regular file, which I imagine could lead to various "bad things" in the case of pipes, char and block devices, etc. such as what the OP pointed about about "/dev/null".
I haven't verified, but I think it also will not dereference links and may potentially be made to clobber or otherwise mess with files ending in hyphen (/etc/shadow-, /etc/passwd- and /etc/group- come to mind) because of the way lib/readline/histfile.c:history_backupfile() constructs the backup file name. Someone with more knowledge than myself might want to look at this closer. It seems like it might be a vector for abuse.
-Jonathan Hankins