Hey, VST,
I have encountered much the same thing when working with volumes: sometimes my computer would be made very slow indeed by a subtraction or union. And my machine is fairly powerful, too.
I found that the problem was greatly alleviated if I:
made sure that the primitives or mesh objects I dropped into the Volume Builder did not already have an extremely high polycount. For example, I have my sphere primitive bumped editable with a Segment Count of 60, rather than the usual 90--100 I usually prefer. With your Cubes, make them Editable with a polycount setting of 8---8---8. The trick is to make your Volume Smoothing do all the smoothing work, rather than putting high-poly objects initially into your Volume Builder.
switched the viewport's current Display Shading away from Gouraud and down to Hidden Lines mode, at least while I am doing the object translation needed for a Subtraction or Union; you can even leave your scene in Gouraud, and instead apply a custom Display Tag to your Volume Mesher to temporarily reduce the demands it's making on your computer resources.
and of course, as you know, the whole Volume operation is made more CPU/RAM intensive if your Voxel Count is dialed very low, or your Smoothing Iterations is too high. One trick is to perform your Union or Subtraction while the Voxel Count is set to something loose, like, say, 5cm. Then, after you've gotten everything the way you want it, dial the Voxel Count down to something finer, like 1 cm.
And, as you know, the Meshes you get as a final result of Volume Building are invariably crazy-high in polygon count. I almost always then apply a Polygon Reduction to that mesh; you can reduce your polycount up to 75% or more, with no discernible loss in visual quality. All in the name of safeguarding your computer's resources and preventing a huge hang or crash.
And, vis-a-vis your texturing your objects: Bear in mind that, once you drop a mesh (or other object) into the Volume Builder, it ceases to be a "mesh". It has become a voxel volume, (a whole 'nother thang) and, as such, will not take a Texture. Only the Volume Mesher (in your OM) can receive a texture. And that Texture will apply to the whole stack of objects in the Volume Builder. Somewhere online, there is a tutorial of how you can use the Correction Deformer on the Volume Mesher to enable you to assign different textures to the different objects placed under the Volume Builder. Though usually your goal is to create a whole new mesh with a single texture, as the goal of Volume Building is not so much to allow you to to do Boolean-type operations, but rather to yield brand-new objects which possess the unique "edge-smoothing" look that Volumes afford.
Best, ras