Why would I need to optimize static geometry every frame? I've been going under the assumption that when you create a display list with the compile option, it never plays with the data again, just reads it.
Exactly! Furthermore, drivers pack your data in the optimal way along with all relevant information for later access.
VBOs are much simpler, and you should know how to pack data, what attributes to activate etc.
But, VBOs are what we have in core profile and should use.
It is a long story why there are profiles and why the old deprecated functionality still exists.
If you are happy with DLs continue to use them, but on the proper way, and they'll serve you well.
If you want to switch to non-deprecated functionality abandon them. VBOs are certainly the right way to do things, but you have to know your hw better.