Bacterial microcompartments are large, roughly icosahedral shells that assemble around enzymes and reactants involved in certain metabolic pathways in bacteria. Motivated by microcompartment assembly, we use coarse-grained computational and theoretical modeling to study the factors that control the size and morphology of a protein shell assembling around hundreds to thousands of molecules. We perform dynamical simulations of shell assembly in the presence and absence of cargo over a range of interaction strengths, subunit and cargo stoichiometries, and the shell spontaneous curvature. Depending on these parameters, we find that the presence of a cargo can either increase or decrease the size of a shell relative to its intrinsic spontaneous curvature, as seen in recent experiments. These features are controlled by a balance of kinetic and thermodynamic effects, and the shell size is assembly pathway dependent. We discuss implications of these results for synthetic biology efforts to target new enzymes to microcompartment interiors.