Все имена переменных и процедур сохраняются. При кодировании происходит лексический разбор кода, строятся таблицы переменных и функций (процедур в PHP нет), код превращается в некоторое подобие байт-кода. После этого весь этот хлам криптуется по алгоритму с открытым ключем. Все. При выполнении исключается этап лексического разбора кода, что увеличивает скорость выполнения. В Zend Optimizer зашит ключик которым раскриптовывается крипта и байт-код принимается к исполнению. Наличие в языке функции eval делает невозможным искажение переменных, если только умный программер до того как криптовать не прошелся обфускатором