Ковыряясь в
исходниках, пришел к выводу, что можно указать EvictionPolicy в конфиге и передать его в перегруженный конструктор.
BasePooledObjectFactory<String> poolFactory = new MyBasePooledObjectFactory();
GenericObjectPoolConfig configPool = new GenericObjectPoolConfig();
configPool.setTimeBetweenEvictionRunsMillis(100);
configPool.setMaxIdle(2);
configPool.setEvictionPolicyClassName(MyEvictionPolicy.class.getName());
GenericObjectPool<String> pool = new GenericObjectPool<>(poolFactory, configPool);
Тогда GenericObjectPool.evictionPolicy проставляется раньше запуска TimerTask с проверками.