"No shirt, no shoes, no service" does not violate the civil rights act. The law says you cannot discriminate against people based upon race, color, sex, religion, or national origin. 

"You must wear shoes" is not a discriminatory act. However, it is illegal to say "we don't serve mexicans," or "we don't serve christians," or "we don't serve women."

The issue of businesses denying homosexual people comes into it because it is sex discrimination. Saying "I won't serve you, because you're the wrong sex" is wrong, whether you're pointing at the customer or their spouse.

To make another example, let's imagine a pair of restaurants across the street from one another- one Kosher, one Halal. Either owner can decide not to eat at their neighbors restaurant, as is their right. But neither can refuse to serve the other based upon their differing religions. 

Does that make sense?