Specifying the RPM tag BuildArchitectures for one sub-package sets the architecture for all packages.
This is the designed behavior of rpm. Basically, a BuildArchitecture is one-to-one with a single parse of a spec file. Adding this feature is of little use except for the special case of "noarch" and even there the problem runs deeper than simply providing the ability to claim that a package can be installed on all architectures. Break the original package into 2 pieces if necessary.