VACUUM FULL blocks the application. That is NOT something that anyone wants to throw into the "activity mix" randomly.
There must be a way to implement a daemon which frees up space of a relation without blocking it too long. It could abort after a certain number of blocks have been freed and then move to the next relation.