Despite being a software engineer, I'm not very well versed in some of the specifics underlying cryptocurrencies, so please bear with me.
Problems with Bitcoin
Transactions / Sec
Bitcoin ran into a problem that they still have not solved. That is, the limit on the number of transactions that can be handled at any given time. Increasing the size of each block addresses this issue, but still leaves the number of possible transactions / sec, to my knowledge, at a number that's nowhere near what would be required to compete in the context of global ecommerce (e.g., with Visa).
To my knowledge, it is the case, and even worse so with the solution to the aforementioned transactions / sec problem (increase block size), that the block chain will continue to grow in size as long as Bitcoin is used, meaning Bitcoin's success is pegged to a sort of Moore's Law of networking, computation, storage, etc. This may seem like a non-issue in the 2-3 transactions per second range, but the cited ~8Mb/sec required to meet demands similar to Visa seems like a much bigger deal, especially for emerging markets and mobile users, than it's made out to be, especially when considering that electronic transactions are drastically growing in volume, worldwide.
Given that, even just 7 million transactions (which is what Visa transacts in a single hour), at a much smaller block size than would be required to handle higher volumes, requires 100MiB of storage (numbers therein are from 2012, before most people even knew what Bitcoin was), it seems like storage will be a non-trivial issue to deal with as well.
How will Zcash deal with each of those, and other issues of scale that I've overlooked? My understanding is that at least part (most of?) the overhead of Bitcoin is related to the triple entry method by which transactions are verified. Does zero-knowledge proofing render all of these issues moot? How many transactions per second could the first iteration of Zcash handle, in theory? Are there logical limitations like in the case of Bitcoin?