I'm torn, personally, but I would be inclined to say that the Supreme Court made the right decision. Obviously there are arguments to be made about the rights of businesses to serve or not serve whoever they want but I think that needs some qualification. In particular, I think the emphasis of the case is slightly wrong - I would have said the key issue was rather whether, in the course of running a business where one normally doesn't mind who one contracts with, businesses should be entitled to turn customers away on the basis of a policy which (1) they hadn't made sufficiently clear that they had, and (2) a breach of wouldn't affect the way in which they run their business. Obviously the discrimination is an issue but I think it's been overplayed as a result of the public hype.
As a pure matter of contract law the Bulls would have breached the contract they had made with the gay couple by repudiating their booking. It would be impossible to imply the term requiring that the people booking a double room would be heterosexual and married into the contract since it wasn't reasonable to assume that the customers were agreeing to be bound by it (as there was a good chance they wouldn't have been aware of the policy).
On a less black-letter point of view, I think it's an important distinction to make that letting a gay couple stay would have made no difference to the way in which the Bulls administered their services than if they had been heterosexual and married. If they had had a similar policy of not allowing children under 10 stay, for example, it might be different - since providing the services to a child might be substantially different to providing for an adult, and so arguably it might be more reasonable for them to turn people away in that situation.
I would agree with the business owner's right to decide who he trades with, but only where either (i) he's in a situation where it would objectively be expected that he cares who he contracts with, or (ii) he has made it sufficiently clear that he doesn't wish to contract with a certain type of people. Regarding (i), if for example you were running a rock-climbing wall, you wouldn't want to contract with anyone who showed up and paid the price to get in - you'd want to make sure they were going to be safe first; hence why most places require you to undergo some sort of assessment before you can just turn up and climb. But at a hotel it's different - the general implication is that you'll be prepared to form a contract with, and give a room to, anyone who turns up able to pay the asking price.
So yeah, although I can see both sides of the argument I think the Supreme Court got this one right.