Ideally, I like my test and production databases to be the same. It makes things easier on a number of fronts.
Yes, you could certainly create a table that has key/value pairs and that would definitely work. Because you want different strings stored (and used) on different servers, I'd add a column for server name. Then, in your queries, you can add a WHERE ServerName = @@SERVERNAME predicate to the WHERE clause and you'll get the string values appropriate to the server. I use this approach in some of my DBA tables that drive processes differently, depending on the server.
It also lets you use the backup/restore approach to create a copy of production on test, etc. so your dev and test databases can be rebuilt as needed.