To know about the differences between the two MCU's it is best to read the datasheets. The same applies to the differences between the two cores.
When one plans to use assembler there are differences between the two. See
https://developer.arm.com/documentation/dui0662/b/The-Cortex-M0--Instruction-Set/Instruction-set-summary?lang=en and
https://developer.arm.com/documentation/ddi0439/b/CHDDIGAC for more information on this.
When using C/C++ one has to tell the compiler which core is being targeted. For instance for the gcc compiler and the Cortex-M4:
-mcpu=cortex-m4 -mthumbThe choice between the two depends also on what one wants to do. What kind of interfaces are needed and how many, like SPI, UART, CAN, ADC, DAC, etc. Also how fast does it need to be. The STM32F411 can clock up to 100MHz, where the ATSAMD21G18 can only go up to 48MHz. This also has a bearing on the max speed of the peripherals.
Both I assume have enough support in the Arduino environment, but for me to unleash the real potential of either would mean bare metal programming. That also makes moving to another manufacturer, like moffy did, unnecessary. This would only be needed when there is a hardware bug in the MCU that causes run time problems.
In the beginning bare metal programming won't allow fast development of projects, like with Arduino, but in the end, at least for me, it is way more satisfying and on my good days just as fast as developing with the use of SDK's or the Arduino environment.
So like others wrote it is not a simple one on one comparison that can be done.