Do you use Image Magick?
There are reasons why you would want to do it dynamically and why you wouldn't. Both approaches are valid. Here are pros and cons:
- performance is better if you cache the images. Server space - which you see as a concern - is cheap these days and shouldn't be a factor. Latency on the other hand creates a poor user experience
- Your scripts may not have the right to execute the image processing script you wrote and you depend on the server more if you do it dynamically.
- If you decide to change the size of your thumbnails, in a dynamic scenario, you won't need to regenerate all the thumbnails since you don't store them.
- watermarking: choose to watermark the images you want to protect. If thumbnails are used for quick viewing of a large file (the "sensitive" asset) then don't watermark your thumbnails.
These are just general rules. Nothing set in stone.
On my own server (where I use wordpress), thumbnails are generated at picture upload time. That gives me better viewing performances when visitors hit my page. BUT, if I decide to redesign my website and change the thumbnail format, I have to regenerate all the pictures.