The following function uses int as the second argument type,
memchr(const void *buf, int ch, size_t count);
Though it is used
All of the standard functions that deal in characters do. I think the reason is partly historical (in some pre-standard versions of C, a function couldn't take a char or unsigned char argument, just like varargs arguments can't have character type) and partly for consistency across all such functions.
There are a few character-handling functions that have to use int in order to allow for the possibility of EOF, but memchr isn't one of them.