Как уменьшить planning time в postgresql?
Я думаю потому что план попадает в кэш.  
Как вариант - использовать подготовленные запросы или не разрывать соединение (pgbouncer в помощь).
Неплохо было бы взглянуть на полный вывод EXPLAIN ANALYZE, но предполагаю, что причина в том, что первый запрос вытаскивает все данные с диска, а при запуске второго запроса postgresql уже закешировал часть данных. Ну и как сказал He11ion, план запроса тоже кешируется на сессию. Соответственно сравнение не корректное получилось. Если первым запустить поиск с английским словам, а потом по русским, я думаю результат эксперимента будет обратным.