Is this really always bad? (variables in l10n functions)

No it does not work, people that will need to translate the string will not be able to use the automated tools they usually use to extract the strings that need translation.

And yes, it is always bad.