While it is true that ESL has the capacity to dynamically allocate more memory from the system if it uses the entire initial pool.
ESL also routinely de-fragments un-used blocks of memory. Unfortunately, to perform a complete de-fragment takes considerable processing, which may not be acceptable to the Users, especially if low performance hardware is being used.
ESL gives the Program Developer the choice of when a full de-fragment is performed.