If you don’t create the worker and cron containers then you don’t have any background jobs running. You’d have to enable background jobs in the web container.
The reason those 2 are a special containers is that they aren’t accessible from the internet. So traffic doesn’t affect their performance.
Another reason is that you can scale them easily. If you want to send emails 2 times faster, just create another worker container. 3 times? Another worker container. Done with the big send and want to save resources? Kill the 2 extra worker containers.
You can do everything in 1 container but then you lose some advantages as those above.