Some general advice:
Build as much of the "smarts" into the level as possible.
Use Triggers to control behaviors. E.g., jump triggers, stop triggers, turnaround triggers. Basically when the AI enters this trigger it's told what to do by the level.
Use invisible Collisions if there are areas AIs absolutely should not be allowed to enter.
Only if you need to, you can get more complicated:
Parent "sensor" or "feeler" triggers to AIs to make decisions. E.g., is there a drop ahead, is the ceiling too low to jump etc. Remember to mark these triggers as Kinematic since they are moved by the AI.
Beyond triggers, try to define the smallest set of states required by the AI. E.g., Idle and Attack. Only add more states as you need them.
The player needs to understand the behavior of the AI to play the game, essentially reverse engineering the FSM in their heads as they play. So keep it simple but fun.
In general, always try the simplest solution that might work first!