How is this method of addressing memory scalable?
What you have there is a decoder, also refer to in this usage as an address decoder. It decodes a binary number into one-hot. An encoder does the reverse.

The benefit in using one is that you don't need a wire in your address bus for every memory location. 

If your memory has \$k\$ locations, you would need \$k\$ wires, but with a decoder, you would only need \$log_2{k}\$ wires. So rather than \$65536\$ wires to address \$65536\$ locations, you would only need \$16\$ as \$log_2{65536} = 16\$. This is because a \$16\$ input decoder turns a \$16\$ bit input in binary into a one-hot output that is one single high output with the rest low of one of the \$2^{16}\$ or \$65536\$ outputs.