I don't understand why you can't get past the idea that everything has to be a configuration at compile time. You don't have to have the size of anything change on the fly.
The responsibility of what data is looked at should be the responsibility of the device getting the data. The sending device, this mux structure, always has 4 inputs routed out, it's only a mater of which of the four inputs actually has valid data at any given time and informs the receiving end which data is valid on that clock cycle.
e.g. some bus protocols (don't recall which ones) have a signal sent along with the data that tells a destination device how many bytes are valid in the multi-byte output. The output is always aligned to one end of the bus or the other.