The one concern I would have with regard to leaving closing off file-descriptors to automatic cleanup, would be how much you care about any data you've written to said file-descriptors and if you reasonably can deal with a failure to write.
write() need not block (depending on how it were open()ed in the first place) and wait for data to successfully commit, so there are cases where close can fail because the underlying sub-system fails to commit the pending write, and thus close exits with failure and sets errno to EIO, and depending on what you just wrote, you may or may not want to take some corrective action.
Admittedly, this is a corner case where you REALLY care about data consistency, i.e. a DBMS type applications or reporting sucess/failure of a backup. In many (most?) cases it doesn't really matter all that much, and you'll be fine leaving off close() to process cleanup/exit.