On the bare-bone MCU platform, there really is no such thing as an “event-driven”, even though the writing words are trying to tell you. The only real events you can get are hardware interrupts.
Depending on the nature of the application and its real-time requirements, interruptions may or may not be appropriate. As a rule, it is much easier to achieve deterministic real-time using a polling system. However, systems that rely solely on polling are very difficult to maintain because you get a tight connection between all aspects of synchronization.
Suppose you are trying to start an LCD that is slow. Instead of re-polling a certain timer when burning processor cycles in an empty cycle, you might decide to get some data on the bus at the same time. And then you want to print the data received on the LCD. This design created a tight connection between the LCD start-up time and the serial bus and another tight connection between the serial bus and data printing. From an object-oriented point of view, these things are generally not related to each other. If at some point in the future you accelerated the serial bus, then suddenly you encounter LCD printing errors because it did not finish working when you tried to print on it.
In a small program, polling is great, as in the example above. But if the program has growth potential, a survey will make it very difficult, and a tight connection will ultimately lead to many strange and fatal errors.
On the other hand, multithreading and RTOS adds quite a lot of additional complexity, which, in turn, can also lead to errors. Where to draw a line is not so easy to determine.
From personal experience, I would say that any program with a size of less than 20-30 thousand LOC will not use planning and multitasking, in addition to simple state machines. If the program is larger, I would consider a multi-tasking RTOS.
In addition, low-performance MCUs (8- and 16-bitters) are far from suitable for starting the OS. If you find that you need an OS to handle complexity on an 8- or 16-bit platform, you probably chose the wrong MCU to start with. I would be skeptical of any attempts to present the OS on anything less than 32-bit.