What is the maximum number of hidden services DHT (Distributed Hash Table) can hold?

Theoretically, the whole hash space.

Who maintains the directory?

All HSDir relays.

What stops anyone from creating a huge list of hidden services (onion addresses) that don't really exist?

Nothing.

However, HSDirs are still protected from this kind of DoS. Hidden services have entry in the DHT only when they are active. How can an attacker keep so many hidden services alive before making huge loads to the directory?