I always build the logic with if/else and switch but the number of enemy types I have is usually small. Your system has a lot of potential when enemy types become numerous.
Oh for sure! You can make different behaviours for different enemy types, they are stored in ActLists which can be shared among Actors. And you can edit the behaviours without writing anymore code.