When using vrt to mosaic on the fly large collections of images, is it better to add overviews (pyramids) to the individual rasters or to the final .vrt, or both? (Where "better" means finding the balance point between using no more storage than necessary while still providing a smooth experience for using and browsing the final image.)
It depends mostly on which is the minimun scale to show your image layer.
Creating overviews for individual rasters is more flexible when you update your layer partially. Just delete old image and put a new image with overviews in place. If you have build overviews for the .vrt you must create it again after update. However, individual overviews do not work well in small scale. If your original images cover 10x10 km each and you want to show on screen an area of 100x100 km the system must open 100 individual files for reading the overviews. If you have created overviews for the .vrt there is only one file to open and it will be faster.
You can also use a hybrid model: build a few internal overview levels (2 4 8) and then create a new physical file from .vrt with pixel size of the next overview (16). Create internal overviews for the subsampled image and finally combine all together into a scale dependent group. When individual images are changed to newer ones the physical overview file often does not require updating because changes are not visible at small case anyway.
When it comes to the need of disk space, it is the the same in both cases. But remember to compress your overviews. With aerial images you can save more than 90% of disk space by compressing overviews with JPEG method and photometric interpretation.
As you put your question I would say that create compressed overviews for your .vrt. It takes the same amount of disk space and browsing experience will be good at any scale. Remember still what I wrote about updating.