Existe tutorial nos fóruns do VirtualBox que tem esta questão,
Q: How can I reduce the size of a dynamic VDI on disk?
There are two approaches to cleaning up and reducing the size of the file system stored on a dynamic VDI. The first is what I call in-place and the second is by doing a file system copy.
This answer addresses the first of these.
Mais uma referência: howto resize / expande um disco vdi (linux guest)