Depende muito do contexto. Para mim, "nativo" significa que um aplicativo usa os recursos e mecanismos que o sistema operacional fornece, em vez de criar seus próprios. Isso pode ser aplicado aos recursos da interface do usuário (botões, janelas, caixas de diálogo de seleção de arquivos), bem como aos recursos ocultos (por exemplo, integração com "Abrir com ...").
Por exemplo, no Windows, um aplicativo nativo usaria "WinAPI" para obter os mesmos botões, barras de rolagem etc. que outros aplicativos. Eles se comportam exatamente nos aplicativos do sistema (bloco de notas) e nos aplicativos nativos de terceiros.
Os aplicativos Java costumam usar "Swing" e parecem completamente diferentes, porque eles mesmos desenham seus controles, em vez de usar os do sistema. O benefício é que o programa tem a mesma aparência em todos os sistemas operacionais.
Outra opção para criar uma GUI é um kit de ferramentas multiplataforma, como "QT". O QT solicitará que o sistema operacional desenhe os controles para que ele pareça muito nativo, independentemente de você estar executando o Windows, OSX ou Linux. Uma caixa de texto QT será semelhante a uma caixa de texto do Windows, no entanto, não é exatamente uma nativa, mas um tipo de emulação. Você pode notar pequenas diferenças nos detalhes (por exemplo, menu de contexto, métodos de entrada etc.).
Observe que quando as pessoas dizem "nativo", geralmente significam que um programa é compilado no código da máquina, e não em um código intermediário, que é executado em uma máquina virtual (como os programas Java e .NET). Nos exemplos acima, o WinAPI e o aplicativo QT estão usando código de máquina, enquanto o programa Java é compilado no bytecode Java. Atualmente, esse uso é um pouco problemático, porque muitos usuários consideram um aplicativo .NET bem feito nativo para Windows - é apenas um .exe, usa exatamente os mesmos controles e APIs ocultos e é quase indistinguível de um programa compilado para Código da máquina.
Da mesma forma, eu consideraria um programa que usa GTK, conhece a estrutura do sistema de arquivos Unix e talvez seja fornecido em um pacote .deb nativo para Ubuntu ou Gnome. Existem até aplicativos Gnome primários escritos em javascript que se poderia chamar de nativo! O mesmo se aplica aos aplicativos "Metro" do Windows 8, que podem ser escritos em vários idiomas, alguns compilados, outros não.