Formula fields are effective for very simple calculations, but they have many limitations:
They can’t reference fields that aren’t on that specific record (e.g. a record in another module, a different record)
Can’t edit those fields later on (sometimes it’s nice to calculate a field with a formula and then edit it later on)
Janky as heck (less powerful, fewer operators, frustrating formula builder)
When you create the formula field, you have to manually update the record for the formula to calculate
When referencing other formula fields, multiple refreshes are necessary. i.e. if you have a formula field that uses a value from another formula field, you have to have one edit to the record to get the first one to calculate, then another to get the second one to calculate. Because the second one can’t calculate on the first refresh because there’s no value in the first formula field
If you can deal with all those limitations though, why not use them?