If this attribute is set to true and distributed building is enabled, then, if possible, the derivaton will be built locally instead of forwarded to a remote machine. This is appropriate for trivial builders where the cost of doing a download or remote build would exceed the cost of building locally.
The reason why the minecraft-server does this is that the “build” process is essentially pulling down a large .jar file. There’s really no expensive build process involved with creating the build artifacts.
IIRC, allowSubstitutes will allow for a remote machine to download build dependencies. Generally this is the desired case if the remote machine has a faster connection, such as being located in a datacenter
I find allowSubstitutes strange as it’s not always a property of the package but a combination of the local host and proximity to caching infrastructure. For example, I always want to be able to substitute builds from our on-premises cache. But that’s not possible if allowSubstitutes=false.