There’s nothing special to reduce draw calls, you simply have to manage what you’re doing efficiently. Some systems combine meshes (batching/instancing) so that it doesn’t multiply the draw calls for each object (like Foliage systems). But then that increases memory count. For something like a cube world, cubes are very simple so it’s better to take the memory hit and combine them because total polygon count won’t be too much.
Unreal can allow you to do this on your own with Blueprints by using Instanced Static Meshes, which will combine the objects to reduce draw calls.