Shenzhen losing Cantonese somewhat makes sense due to the sheer number of migrants moving in from different regions of China. They likely outnumber the population several-fold now. It was only declared a special economic zone back in the 80's - Before that, it was a relatively small town. Now it has a population of about 20 million.
Compare that with Guangzhou, which also has a ton of migrant inflow from other provinces but with a large local populace - if you walk down any given street you'll still hear Cantonese spoken pretty often, though Mandarin is more frequently used (since it's the common tongue.)