It’s because functions are supposed to not be ‘temporal’, ie, they are time independent. Technically, they are also not mean for updates, but that’s ok in UE.
So, if you want to ‘do something’ then you need a custom event, and if you want to ‘compute and return a value’, then functions are the way ![]()
You may be suffering from youtube tutorial misinformation. It’s very common to see people on there using functions where they should be using custom events.