В эфире транзакции могут выполниться и не выполниться, при этом в первом случае если вызывается контракт то он может вернуть некое значение, кроме того он может залогать некое событие. Токенный стандарт устроен так что токены переведены тогда и только тогда когда залогано событие Transfer а не тогда когда транзакция выполнена, потому что она может быть выполнена и вернуть значение соответствующее ошибке
спасибо, кажется понимаю, уязвимые контракты не проводят проверку на событие Transfer и по умолчанию считают что если транза эфира выполнена то и токены переведены если на такой контракт отправить транзу с какой либо "ошибкой" то он посчитает что токены зашли хотя по факту они не будут переведены а останутся на адресе отправителя