Personally from going from a finite state machine to a behavior tree i find there are multiple advantages:
- Iteration time:
With a behavior tree you have modules that are kind of like Lego-blocks, so you can put together a couple of behaviors and you can have an AI up and running rather quickly. Say you want it to chase the player. You create a sequence called "Chase Player", you make it rotate towards the player, you set the speed and then finally you tell it to move, and then it will repeat those steps untill either its out of range or any other condition you set for "Chase Player"
As said above, you have several nodes which are the building blocks of the AI. Those are different parts that come together to create a functioning AI. And its only your imagination that will limit what the AI can do. And you can define the parameters yourself, say in "Chase player" the speed node needs to be 10, but in "Flee" the speed node needs to be 20. It's all decoupled from eachother as you create individual nodes, which makes it flexible.
- Tree-like structure
The behavior tree is a tree as the name suggests, which means each composite node, or a root node / a sub root node, (ie Chase player) have branches that have their own nodes, or leaves if you want to call it that. Meaning each composite node controls their own branches and nodes attached. Again, this allows for modular and decoupled design. Meaning you can have 1 composite node have 10 branches for one behavior, while another composite node may have 2 or 5, it's all up to you to decide how complex a behavior should be.
So yea, i would suggest learning Behavior Trees for those simple reasons, it might have a steep learning curve as there are a lot of concepts to wrap your head around in the start, but once you get familiar with it, prototyping AI becomes really easy. And also it has been around since the Halo days, and it's still widely used in games, so if you need reference, hit up some games and study their behavior. Happy dev'ing.