ERC2771Context: TypeError: Immutable variables cannot be read during contract creation time

This is definitely true about humans, but I wouldn't apply the same reasoning to code (contracts) so lightly. It is true that a contract could have a bug discovered and lose its trustworthiness, but if you want the ability to replace it if that happens you are forced to introduce humans in the loop to make that decision, which I think is a strictly worse situation in terms of trust assumptions.