Let us precisely look at what you wrote:
If I don't know how users will derive from my interface or how they will want to delete objects of the derived class, why wouldn't I always make the destructor virtual in a pure virtual base class?
If you really don't know how users of a certain class will delete the objects, you will better off to design a class for polymorphic deletion, hence add a virtual base class destructor "just in case". That's explained in the top answer of the question you already mentioned:
.. [having a virtual destructor is] not always necessary, but it ensures the classes in the hierarchy can be used more freely without accidental undefined behaviour if a derived class destructor is invoked using a base class pointer or reference.
However, as a library designer, you may design a library with a virtual class/interface with a more specific contract in mind how it has to be used. You may decide that
construction and deletion of concrete instances are completely the responsibility of the user of a lib, and expected to happen in a context where the concrete types are known (hence no polymorphic deletion)
the library itself only implements means like the template method pattern, but no deletion of the objects.
For such a case, a pure virtual destructor is probably superfluous and hence negligible, in which case one should make the destructor non-virtual and protected.
For example, think of a program designed with dependency-injection in mind, where several modules are implemented as a class with an interface, for making it possible to mock the class out during unit testing. For these modules, one usually creates only one instance of the class during the live time of the program, and the deletion only happens when the program ends. Why would you need a virtual destructor for such a class? It is perfectly possible to omit any explicit deletion for such a class and rely on the operating system to clean up the processes memory when the program ends.
For a more in-depth discussion about when and how to use virtual destructors, and when not, see Herb Sutter's article from the C++ user's journal from 2001. The article shows also an example of struct unary_function from the old standard libs, which is inheritable, still a virtual destructor isn't needed.