У меня такое чувство что мы с вами говорим о разных вещах.
Ведь даже вот тут github.com/MODX-Club/modCaptcha/blob/master/core/components/modcaptcha/processors/modcaptcha/web/check.class.php
строка 29, и это не мой код, а ваш =)
$session_code = (!empty($_SESSION[$key]) ? $_SESSION[$key] : '');
$_SESSION это суперглобальный массив =)
Почему $_SESSION это не плохо, а $this->modx->request->parameters[$method][$key] плохо?