Depende mucho del contexto. Para mí, "nativo" significa que una aplicación utiliza las características y los mecanismos que proporciona el sistema operativo, en lugar de implementar las suyas propias. Esto puede aplicarse a las funciones de la interfaz de usuario (botones, ventanas, cuadros de diálogo de selección de archivos), así como a las funciones ocultas (por ejemplo, integración con "Abrir con ...").
Por ejemplo, en Windows, una aplicación nativa usaría "WinAPI" para obtener los mismos botones, barras de desplazamiento, etc. que otras aplicaciones. Se comportan exactamente igual en las aplicaciones del sistema (bloc de notas) que en las aplicaciones de terceros nativas.
Las aplicaciones Java a menudo usan "Swing" y se ven completamente diferentes, porque dibujan sus controles ellos mismos, en lugar de usar los del sistema. El beneficio es que el programa se ve igual en todos los sistemas operativos.
Otra opción para construir una GUI es un juego de herramientas multiplataforma como "QT". QT le pedirá al sistema operativo que dibuje los controles para él, por lo que deberían verse muy nativos, sin importar si está ejecutando Windows, OSX o Linux. Un cuadro de texto QT se verá como un cuadro de texto de Windows, sin embargo, no es exageradamente nativo, sino una especie de emulación. Puede notar pequeñas diferencias en los detalles (por ejemplo, el menú contextual, los métodos de entrada, etc.).
Tenga en cuenta que cuando las personas dicen "nativo", a menudo significan que un programa se compila en código máquina en lugar de en un código intermedio, que se ejecuta en una máquina virtual (como los programas Java y .NET). En los ejemplos anteriores, la aplicación WinAPI y QT están usando código de máquina, mientras que el programa Java está compilado en código de bytes Java. Este uso es un poco problemático hoy en día, porque muchos usuarios considerarían una aplicación .NET nativa bien hecha para Windows: es solo un archivo .exe, usa exactamente los mismos controles y API bajo el capó, y es casi indistinguible de un programa compilado para codigo de maquina.
Del mismo modo, consideraría un programa que usa GTK, conoce la estructura del sistema de archivos Unix y tal vez viene en un paquete .deb nativo para Ubuntu o Gnome. ¡Incluso hay aplicaciones Gnome de primera mano escritas en javascript que uno podría llamar nativas! Lo mismo se aplica a las aplicaciones "Metro" de Windows 8, que se pueden escribir en una variedad de idiomas, algunos compilados, otros no.