I disagree. If there is no content interesting to humans and/or search engines on a given URI (i.e., a custom 404) page, the server must also return a HTTP status 404 to reflect this. The 404 status response is the main way to indicate to search engines that the content that could (maybe) be found previously on a URI is not /no longer there. Without 404 it would just keep all sites it ever found in it's index, regardless if the content is still there or not (okay, there is a concept called "soft 404", which does use HTTP status 200, but I don't want to get in to that.)
The fact there is a file to serve that content and that that file was found is completely irrelevant. So no, I don't think is the server is working correctly, it must send 404 not found headers on those pages.
Also, as stated in the RFC, 404 is simply "not found", not "file not found", which also suggests it's not about finding files but about finding resources.