What I don't get about these ideas is that isn't the factor "how much do you need to be in the office?" If you don't need to be in the office, why not just keep salaries the same and then you select from a larger pool of candidates (this should give you a pretty good pick, but you're still limited by when waking hours overlap).
If you only need to be in the office once a month, dock a little as now you have to cover travel and lodging.
It really seems like the factor of pay should be based on how important physical presence is, not on where the person is. Because otherwise I don't see it as a rational thing for a headquarters to be in SF and an employee in Arizona to get paid less than an employee in NYC. There's more advantages for the company for having your employee(your average programmer, at least) be in AZ rather than NYC. You need them in the office? A whole lot easier/cheaper to get that AZ employee there.
If you only need to be in the office once a month, dock a little as now you have to cover travel and lodging.
It really seems like the factor of pay should be based on how important physical presence is, not on where the person is. Because otherwise I don't see it as a rational thing for a headquarters to be in SF and an employee in Arizona to get paid less than an employee in NYC. There's more advantages for the company for having your employee(your average programmer, at least) be in AZ rather than NYC. You need them in the office? A whole lot easier/cheaper to get that AZ employee there.