Почему $_SESSION это не плохо, а $this->modx->request->parameters[$method][$key] плохо?
Сессия одна на все области видимости скрипта. Ее нельзя ни с чем спутать. Работая с сессией вы априори знаете, что работаете только с ней. А вот обрабатывая данные запроса в процессоре, вы рискуете обработать данные не своего запроса. Сейчас, с каптчей, вы рассчитываете только на то, что у вас есть уникальный ключ параметра запроса и типа это вас перестраховывает. Да, это отчасти так, но это всего лишь меньший риск при использовании неправильного подхода. Он тем и не правильный, что при большей вероятности неуникального ключа, возрастает вероятность и логической ошибки. Если вы используете правильный подход, он всегда вам больше дает шанса на то, что и результат будет правильный.
Но вот вам еще один вариант: попробуйте свой скрипт вызвать не со страницы, а через Console. Будет ли у вас там нужный? $this->modx->request->parameters[$method][$key]; И что вы будете делать, чтобы у вас этот параметр был в пост-запросе? Как отладку будете выполнять?