Image storage or reading from SQL involves encoding conversion issues. The server side needs to encode the image to form a string and then store it in SQL, while the file system only needs to store it directly, eliminating the need for encoding.
Not really. You can store a sequence of bytes in a file or in a database. There is no difference. In either case, you need to store some knowledge on how to handle the bytes. (That is, what sort if image it is.) There is no need to encode something, just because you store it in a database. (For some reason Moondaddy has chosen the datatype nvarchar(MAX); a better type would be nvarbinary(MAX).)
There are other good arguments for storing the images in the file system, and you list some of them.
I like to point out a few more things. If you store the images in the file system, you can get a problem if there is a major crash and you need to restore from a backup. If everything is in the database, getting a consistent restore is never a problem. But this can be more difficult with files in the file system. How critical this is depends on the actual system, but this is something you should make analysis of.
When it comes to speed, it is indeed faster to read files from disk than from the database, particularly for larger images, but this has more to do with the access pattern. However, there is an option to combines this, and that is FILESTREAM. With FILESTREAM, the images are stored as files in the file system, but you access them through the database combined with the OpenSqlFilestream API. A key feature here is that while the files are stored in the filesystem, they are still part of the database and included in backups etc, and makes a consistent restore easier to achieve.
FILESTREAM is mainly useful when your files are of some size. The cut-off limit where it is worthwhile is usually given as 1 MB.