Why do you assume that, as opposed to it only happening once per frame, if a surface has been modified?
Because modifying one vertex in contrast to modifying lots of vertices in my shader system shows a signifigant difference in speed.
In any case, if the buffers aren't locked and unlocked per modification, then the handles to these streams would still be useful for other purposes (e.g., passing them to external DLLs, software vertex shaders, etc.).