I have been thinking about this topic quite a bit recently and really don’t have a decision that I am comfortable with.
If I keep the textures (materials) in each blend files folder than I will be having a lot of duplicated textures and materials filling up my hard drive. That is to say, I might use the texture of marble on a chess board than use it on a floor in a building, or use it on a counter top in a kitchen scene. I will have to store that texture 3 times in three separate files. That sounds like a lot of wasted hard drive space.
On the other hand, if I store the textures in a folder on the hard drive named “Textures” and put all my different textures into folders within that file by categories, I can then find for instance that marble texture that I liked so much. But (as I understand it) this makes it difficult for blender to find when a folder (like my Textures folder) gets moved then no blend file will be able to find it’s textures. And vice versa if I move the blend file then it to will not know where to find the texture.
Obviously, drives break down and need replacing. I would hope that having a main texture file with all textures in it and backed up to the cloud or another HD would be a good solution but would also mean that any blend file you work with in the future would have to have all its texture entered into the materials section of that blend file.
So, what is the best solution?