Buenas.
La principal diferencia, es que
const es válida en el scope que se ha declarado y
define() lo lleva al scope global. También mencionar
const no puede ser usada en el scope global (En versiones antiguas sí < 5.3), un ejemplo válido sería como propiedad de una clase, ejemplo
FOO::BAR, y lógico automáticamente es declarada como estática, es una constante.
Saludos.