In the original NEAT paper, these two concepts are defined distinctly.
When crossing over, the genes in both genomes with the same innovation
numbers are lined up. These genes are called matching genes. Genes
that do not match are either disjoint or excess, depending on whether
they occur within or outside the range of the other parent’s
innovation numbers. They represent structure that is not present in
the other genome. In composing the offspring, genes are randomly
chosen from either parent at matching genes, whereas all excess or
disjoint genes are always included from the more fit parent.
However in terms of process, they are handled equivalently. If you see equation 1 on page 110, the equation says using coefficient c1 for Excess E and c2 for Disjoint genes. But in the parameter settings, c1 and c2 are set to equal values. So, while the evaluations presented in the paper do not distinguish between excess and disjoint genes from a process perspective, the purpose is for the framework to allow the distinction between D and E genes to be used by the user of the framework by supplying the values that make sense in their context.