But not everyone that uses Linux compile X libs or Firefox themselves (a very tiny fraction do). Why does it make sense to have include headers and source?
It makes sense to install things in an upstream-supported way. It definitely makes sense to support e.g. standard autoconf macros for detecting dependent libraries. Otherwise, people who try to build software from source (which most linux users do eventually) will get very confused when their build fails. (I remember getting bug reports from debian users who had installed kdemultimedia and some but not all of the kdemultimedia-devel packages - meaning that autoconf would detect that the kdemultimedia headers were installed, but then the specific header I was using wasn't present).
If you can repackage without breaking the upstream-supported use cases then sure, go for it, if you want to.
If it really is a problem for you then work around it. But for most of us installing dev files makes sense if we ever need to compile something against those .h files.
Disk space may be cheap but limited. It just makes no sense whatsoever to just put a lot of files on my disk i will NEVER care about. NEVER.
And if i need them, i will install them. Usually i only want a freaking binary to run.