Event Publish is much simpler than CDC, that just involves the command service assuming responsibilities of Command Write as well as Event Publish. There is nothing that command DB has to be aware about or involved in post that. With simplicity, there is an issue of transactional writes to DB and Messaging system, which are alleviated in CDC. CDC also involves event publish, but the publisher is not the command service, but an additional transaction log scrapper service. Thus CDC has more moving parts, but guarantees transactions and message ordering. So a trade-off of complexity and cost is at play. Many systems are okay not expecting transactional guarantees in command services (like analytics, where you may be okay loosing a few messages).