Is this really a better style to use generator expressions every time?

These two options are 100% equivalent, because ${MSVC} in the genex will be evaluated immediately (i.e. at configure time). So it comes down fully to code style preference, which is subjective (but I find the if-based form more readable).

For a case where configure-time vs. generate-time can be different, see a recent question of mine.