Let's take an example. We have a blanket product that has variants of 9 colors, 16 textures, 4 sizes and 24 custom corners. If I create 4 different variant groups and select 'brown' as the color, 'fuzzy' as the texture, '32 inch' as the size and 'bear' as the custom corner, each variant has it's own image that I can assign to it. That would require 9x16x4x24 images for a total of 13,824 images instead of 9+16+4+24 which is a total of 43 different variants. I think you see the problem.
In this situation, I believe a custom solution is going to be the only 'real' option.