Почему не срабатывает событие OnBeforeOrderAdd?
потому что при вызове функции обработчика нужно ему передавать ТЕ ЖЕ параметры, что и у исходной функции.
В вашем случае:function OnOrderAdd_item(&arFields)
Смотрим в документацию
ну и дебагом все отладить, может он заходит, но не создает файл просто
1. нет прав на запись в php_interface?
2. иногда встречаю там .htaccess c deny from all, проверьте
3. в любом случае должна быть ошибка в логах