A first important thing to note is that using Spark will use more memory than using the DSS engine. Of course, using Spark means that if the proper conditions are met, you will benefit from paralellism, but Spark is much more memory-heavy, including on the DSS host. The DSS engine never loads datasets in memory and is very lean in memory (but it often slower).
Generally speaking, sync recipes will almost always be slower and more brittle with Spark than with DSS engine, so we almost never recommend using Spark engine for sync recipe. The reason is that you will usually almost never "from HDFS to HDFS" or "from S3 to S3" (or such), i.e. the "good cases" for Spark. Most syncs will be between completely disparate storage kinds (because that's why you sync in the first place) and hence you lose most of the benefits of Spark while still having the drawbacks of being heavier, harder to tune, and being more prone to errors in general.
It is not possible to say why your Spark recipes are "crashing" or "not working with some users" in the general sense. Please open support tickets, attaching job diagnosis, so that we can review what kind of issues you are experiencing.