I’m not sure if MaxUnpool is too powerful, as the majority of the activation output should be zero, so that your model still would have to learn the other values.
Did you try to use the encoder for your other use case?
If so, did it perform poorly?
Just as a test you could try to use transposed convolutions and see, if that helps your model (especially the encoder as it seems to be the main use case).