It’s not a bug. Material Instances in Unreal keep references to textures even if removed parameters with those textures. It’s intended behavior - you don’t want Unreal to “forget” your parameter values (textures, scalars, vectors, bools) when you temporary delete some parameters from the material for debug/test. But yes, the downside - it keeps references, therefore loads more textures than needed.
The solution is simple:
- Open Material Instance
- Remove parent material (that will clean Material Instance)
- Save Material Instance
- Press Ctrl+Z to restore previous parameters
- Save Material Instance Again