How to change DB file location with Replication
Here's how I'd do it:


Schedule some time where the database can be down for the amount of time to move the files
Execute a series of 'alter database [foo] modify file (name = 'foo_1', filename = 'new location here') statements
alter database [foo] set offline (you'll have to kill any active spids in the db or wait for them to finish their business)
move your files
alter database [foo] set online


If you want to be really clean about this, you can stop the distribution agent while the database is offline and restart it when it's back online.  But that's not necessary.  Just so you know, I've also done this with a distribution database and would imagine that it would work fine with a publisher, too.