Your manipulate is trying to keep track of the symbols Subscript[x, b] andSubscript[x, s] which are not changing. The way to make Manipulate stop looking at those is to use the TrackedSymbols option to tell it what to really pay attention to as in this:
Manipulate[
BarChart[100 {100 Subscript[x, S], Subscript[x, b]}/W /.
MaxUtility[W, p, \[Gamma], r], ChartLayout -> "Percentile",
AspectRatio -> 1/5,
ChartLabels -> Placed[{"Stocks", "Bonds"}, Center],
BarOrigin -> Left, ImageSize -> 800], {{W, 100}, 1,
1000}, {{p, 0.5}, 0, 1}, {{\[Gamma], 0.5}, 0,
3}, {{r, 0.095}, -0.01, 0.15},
TrackedSymbols :> {p, \[Gamma], r}]