Reducing polygons while preserving the texture?
Just tried MagicaVoxel out of pure curiosity and this is what I found out.

While MagicaVoxel at first glance seems to produce decent game-friendly triangle-based geometry, it actually does the complete opposite. 

The software uses a "texture" but it does so in an unusual way. There is absolutely no UV in a traditional way. What MagicaVoxel does is overlaying all vertices of the faces with the same color and putting them on the same uv coordinate onto a colormap like image. 



That means that the vertices of all faces which share the same color also share the same UV coordinate and it also means that every change in color produces more faces and of course more vertices

Furthermore, not all of the vertices are connected to one another so all of Blender's simple semi-automatic methods (dissolve edges, decimate modifier) of reducing polycount will ultimately fail, because dissolving an edge of a triangle simply destroys said triangle. 

Reducing the polygons is only half the battle and the overall topology of voxel-like meshes normally is decent enough. The disconnected vertices on the other hand produce a high unnecessary vertex count that needs to be reduced, because they produce unnecessary normals. 

IMHO the best method to deal with your mesh is


Creating a copy of it and reducing polycount by using a remesh modifier and a collapse decimate modifier with triangulate on top of it.



Unwrapping the new mesh using smart uv project



Baking a new texture for the decimated mesh from the original by using the "Selected to active" bake method.



Creating a new material for the new mesh and assign the texture