The problem with storing filenames in a database, and storing the files on disk, is that then you need to roll your own remote file access in the case where multiple client machines need access to the same file backstore. While not impossible, it's certainly higher in development cost than using a canned solution if your preferred database provides it. Especially if you need to support remote file locking, atomic cross-system unique filename generation, and so on.
The moral being: file access is easy when you have one program running on one machine. It becomes more difficult when you have multiple programs sharing the same data on one mahcine, and even more difficult when multiple programs on multiple machines need to coordinate access to shared resources on one or more remote servers. Databases are good at this, but as others have said it can wreck the performance of other relations.