You nailed it on the head with the advantage. This option allows you to easily modify your application by changing the subVIs. Since they are not part of the executable, you do not have to build a new executable every time you change a subVI.
As far as memory, this option saves memory becuase your application is not as large. When it is loaded into memory, the dynamic VIs are not automatically loaded. They are only loaded when you call them. Therefore, it uses less memory.
However, on the same token, since they are not loaded with the rest of your application, this must be done at run-time which can slow down the execution of your application. They have to loaded the VIs, execute them, and then unload them which consumes more execution time. Which choice
is better just depends on your memory and speed needs.
J.R. Allen