I finally found some time to properly respond... busy week!
Functionally the main difference between Monero and Zcash (esp. after RingCT is integrated) is that Zcash has a larger anonymity set at the level of individual transactions (all previous users) than Monero (some randomly chosen subset of previous users). In practice the difference is likely somewhat narrower, but difficult to fully characterize.
I agree
The trade off for that difference in anonymity set is a wide gap in efficiency
I agree, but I am not sure it is a huge deal. Most cryptocurrencies hardly process any transactions per second. It is unclear exactly how less efficient Zerocash is compared to RingCT anyways, so we will not really be able to test how big of an effect this will have until both technologies are out in the wild. When using privacy-focused cryptocurrencies, I think that it is reasonable to accept longer transaction processing times and a larger amount of data per transaction for the sake of anonymity/privacy. I am not sure how worried privacy/anonymity focused users will be when it comes to efficiency and data usage.
a wide gap in cryptographic complexity and maturity
I disagree here. Maybe if you are comparing Zerocash to Monero as it currently exists, but you are comparing Zerocash vs Monero with RingCT... hardly anyone truly understands the math behind Monero as it currently exists, much less the math behind RingCT. Although it may be true Zerocash is more complicated mathematically than RingCT, they both are quite hard to grasp if you don't dedicate a long time to understanding them and/or are a mathematician/genius. Furthermore, people use things they don't understand every day. Many people don't understand how a car works but drive, how a credit card works but use their cards for every transaction they make, how a plane works but fly, etc.
probably a gap in implementation maturity
I disagree with this as well. RingCT will be just as new, as far as the implementation, as Zerocash because both have barely entered the library/alpha stage.
the trusted setup,
After a little research, they seem to have figured out a good way to do this using multi party computation. Using MPC to generate the seed was talked about in the original version of Zerocoin, and it seems like they will use their own version of it for Zerocash. If you look into the (now proven false rumors) that Anoncoin was going to implement Zerocoin there is a lot of discussion about MPC. The whitepaper for the MPC math they will use to generate the seed is written by the authors of the Zerocash whitepaper.
https://forum.z.cash/t/trusted-setup-phase/68/2 some functional limitations
I'm not sure what you mean
and some stronger cryptographic assumptions (meaning more ways it can break, but not necessarily to a degree that is a huge concern).
I can agree with this.
Anyway given that Monero already uses cryptography rather than mixing, the option to swap out the cryptography with zerocash exists, just as regular ring signatures are now being swapped out with RingCT. There are no current plans to do so for the above reasons, but if zerocash techniques become more mature and trusted (and perhaps efficient), and it becomes clear that's what users want, it could be done at some point.
tldr, these are both serious, credible cryptographic techniques to deliver private transactions, with different advantages and disadvantages.
I agree.
-------------------
I think you gave a mostly fair review, but I disagree (and/or disagree about how big of a deal) some of your claims are.
Disclaimer: I am an investor in Monero, and will also be buying some Zcash as soon as I am able.