There’s a Python script called Periscope that will search for subtitles for a video. It doesn’t always find them, however the web page lists the URLs for the subtitle providers. If Periscope fails, you can go to the sites directly and find the subtitles.
Note subtitles (.srt files) will be found by XMBC and displayed (if toggled on in XBMC) if they have the same name as the video file. However, if you are playing the file through a uPnP source, it won’t work. So mount the NAS’s video directory on the XBMC box instead.
*edit 31Mar2012* XBMC has a plug-in that will download subtitles. In XBMC, select System -> Settings -> Add-Ons and search for “subtitles.” The plug-in is called “XBMC Subtitles.” Here’s how to use XBMC Subtitles. One caveat with this: although the integration with XBMC is great, there’s no guarantee the subtitle was created from the video you have. For instance, if the creator of the video cut out the previous episode review, but the subtitler used a video that had it, the subtitles will be out of sync with the video by a minute or so. If you can’t find a subtitle that matches, you can fix the offset with SubRip File Offset. Upload the .SRT file to that site, enter the offset and replace the original .SRT with the fixed file.