My current solution is to iterate NxNxN steps - just as if I were building a cube of cubes - except only placing a cube at each step if the position of that cube is within a given radius (N * cube size). Simple pseudocode:
for x = x_min -> x_max
for y = y_min -> y_max
for z = z_min -> z_max
cube_origin = Vec3(x,y,z)
if (cube_origin.magntidue() < R)
place_cube(cube_origin)
Is there anything more efficient for generating a sphere of cubes? Even better if there was a way to construct it in such a way as to only have to generate the outer hull of cubes, and the core could be filled in dynamically as needed.