The answer is the ever popular: It depends.
For most cases, storing the file using the web server or a file share and storing the URL or UNC for that file is the easiest and most efficient way to handle them. You can store the bits in a VARBINARY(MAX) column and reconstitute the file as needed, but this is complicated compared to using the file system to handle the image files and storing the URL or UNC.
In theory, theory and practice are identical. In practice, theory and practice are unrelated.