The Arduino has done wonders to bring embedded systems in reach of people who otherwise wouldn't have access to them. It is a very powerful system, but it has drawbacks and limitations. The program and data sizes are limited, as is the execution speed. They are often plenty for many projects, but sometimes more is needed. For larger projects more space is needed. Or maybe it needs to be faster. Also, you only have one program and to have the processor do more than one thing (multitask) requires some tricky programming.