I would suggest managing your data as 3 separate layers and setting their order in Leaflet via MapBox.js. You would essentially have one base layer from MapBox Studio that is just background data like imagery or topography. Next you would have your CartoDB layer. Lastly would be a layer of labels, roads and places from MapBox Studio.
I have done this using both the mapbox.js library and cartodb.js. I found there was some conflict if I loaded both libraries in their entirety so I use a standalone version of MapBox.js and the entire library for CartoDB.js (see below).
<script src="http://libs.cartocdn.com/cartodb.js/v3/3.13/cartodb.js"></script>
<script src='https://api.tiles.mapbox.com/mapbox.js/v2.1.6/mapbox.standalone.js'></script>
//this is the url from CartoDB for the viz
var vizUrl='https://yourAccount.cartodb.com/api/v2/viz/link/viz.json';
//this is your access token for your mapbox layers
L.mapbox.accessToken = 'yourTokenHere';
//the next two variables are the MapBox links to your hosted base and overlay styles
var mapBoxBaseTiles = L.tileLayer('linkToYourBottomTiles' + L.mapbox.accessToken);
var mapBoxTopTiles = L.tileLayer('linkToYourTopTile' + L.mapbox.accessToken);
//now create the mapbox map
var map = L.map('map')
map.setView([20,-10],3)
//now add the bottom tiles
map.addLayer(mapBoxBaseTiles)
//next add the middle (CartoDB layer)
cartodb.createLayer(map, vizUrl)
addTo(map)
//Finally add the top layers of mapBox roads, borders etc and bring it to the front
map.addLayer(mapBoxTopTiles);
mapBoxTopTiles.bringToFront();