Как показывает моя практика, лучше всего можно защищаться от краж в легальной плоскости: оформить интеллектуальную собственность на ПО и выдать клиенту лицензию на него. Ну и в случае утечки — тормошить на вполне легальных основаниях.
ionCube, Zend, SourceCop, SourceGuardian, bCompiler в некоторых случаях усложняют поддержку продукта как такового (идут трудноуловимые ошибки, которых нет в «чистых» исходниках).
Впрочем, можно использовать обфускаторы исходников — если не всех, то каких-то критических частей.