Creo que la diferencia tiene mucho más que ver con el uso previsto del lenguaje.
Por ejemplo, Python se interpreta y no requiere compilación y vinculación, como Prolog. Clasificaría ambos como languges de programación.
Los idiomas de programación están destinados a escribir software. Están diseñados para gestionar grandes proyectos. Probablemente puedan llamar a programas, leer archivos, etc., pero podrían no ser tan buenos como un lenguaje de script.
Los lenguajes de secuencias de comandos no están diseñados para el desarrollo de software a gran escala. Su sintaxis, características, biblioteca, etc. se centran más en lograr rápidamente pequeñas tareas. Esto significa que a veces son más "hackish" que los idiomas de programación, y es posible que no tengan las mismas características agradables. Están diseñados para realizar tareas comunes, como iterar a través de un montón de archivos o realizar tareas de administrador de sistemas, para que sean automatizadas.
Por ejemplo, Bash no hace bien la aritmética, lo que probablemente haría que escribir software a gran escala sea una pesadilla.
Como una especie de punto de referencia: nunca escribiría un reproductor de música en perl, aunque probablemente podría hacerlo. Del mismo modo, nunca trataría de usar C ++ para cambiar el nombre de todos los archivos en una carpeta determinada.
Esta línea se está volviendo más y más borrosa. JavaScript, por definición, un lenguaje de "secuencias de comandos", se utiliza cada vez más para desarrollar "aplicaciones web" que están más en el ámbito del software. Del mismo modo, Python inicialmente se ajusta a muchos de los rasgos de un lenguaje de scripting, pero está viendo más y más software desarrollado utilizando Python como plataforma principal.