Não entendi muito bem porque na resolução do exercício não é necessário as chaves? Outra coisa, eu abro as chaves logo após a condição (conforme o código abaixo), tem algum problema em fazer isso?
    class Program
    {
        static void Main(string[] args)
        {
            double valorDaNotaFiscal = 1;
            double imposto;
            if (valorDaNotaFiscal < 1000) {
                imposto = 0.02 * valorDaNotaFiscal;
            } else if(valorDaNotaFiscal >= 1000 && valorDaNotaFiscal < 3000) {
                imposto = 0.025 * valorDaNotaFiscal;
            } else if(valorDaNotaFiscal >= 3000 && valorDaNotaFiscal < 7000) {
                imposto = 0.028 * valorDaNotaFiscal;
            } else {
                imposto = 0.03 * valorDaNotaFiscal;
            }
            Console.WriteLine("Imposto a ser pago: " + imposto);
        }
    } 
             
            