On average, yes. But mining is a probabilistic process. Occasionally, a minority group will get lucky and mine two blocks in quick succession. If they keep their blocks secret, then they can cause the rest of the network to waste time mining on obsolete blocks and thereby increase their effective share of the network's hash power.
Could they double-spend some coins by spending them on the public chain, and then get their chain where they didn't spend them accepted as the new public chain?
Not effectively. Whichever chain ultimately wins still defines the outcome of "double-spent" coins, so if they tried to double-spend, one transaction would still be rejected when its chain is rejected by the mining community.
If I understand correctly, the only way to do this would be to get a private chain longer than the typical number of accepted confirmations, which is currently 6 for most merchants. In this method, you spend the coins, wait for 6 confirmations, the merchant ships the product, and then you reveal a longer chain where those coins were never spent. However, getting a chain advantage of that length is extremely unlikely without a massive fraction of the network power.
The attack described is for pools where they lack a majority of the processing power, but still have enough power to occasionally make chains at least a couple blocks longer than the rest of the miners.