Remember how Apple used to charge for iPod Touch updates to new iOS versions and no one could figure out why when they didn't do it for iPhones? Jobs eventually gave a vague accounting reason, and I suspect a similar could possibly be the case here.
However, since AT&T didn't say that, nor did they charge a price from the start, it's probably a change in marketing strategy based on sales data they've generated thus far.
.99 has been at the end of most dollar amounts of anything being sold for decades because people tend to respond to it more. If their 3GS sales were not as big as they wanted, their marketing team might think assigning a value to it will help. Of course, they know they could be wrong, so I'm sure they're prepared to drop the price if need be, but I doubt they'll need to.