I think a lot of the difficulty is in the build system being federated. This makes it complex as it supports multiple build other systems for other ROS packages. I haven't looked into it much yet, but I'm curious about ROS 2 also supporting ROS on smaller micros now. I think this would make the build system more complex.
Modifying the how the devel space is handled seems like an improvement and making it more modular seems like it should help though.
You can look up more informed and lengthy threads/holywars about build systems, but in my experience, they always end up being complex for large projects. Some IDEs try to hide the complexity behind dozens of GUI tabs (build settings), but that usually makes headless/CI builds complicated, and sometimes even impossible.
Also, what I have seen a lot is: when people are struggling with build systems, they usually don't have a clear understanding of major underlying steps that need to be performed to build the executable: invoke compiler to compile individual source files to corresponding object files (with correct include paths and compiler flags for architecture) and then invoke linker to link them and any required libraries together, producing an output executable.
Once this process is clear, reading the documentation of particular build system to achieve what you need gets a lot easier.