If yes who decides that? Does the algorithm have rules to change that automatically? Will miners approve that if they get penalized?
The miners essentially decide (with bitcoin the rules are sort of obvious so everyone agrees to them) but with multi-pow coins miners have to rely on working out what will make them the most money/coins. In general this means sticking with what everyone else is doing, the only practical way of knowing what everyone else is doing is assuming everyone is following the software. In theory thus, optimum strategy is to follow the software and hence the developer gets to choose.
In reality, some miners might refuse to download new updates. Now you have different miners enforcing different rules, working out the optimum in this situation is far from trivial and could lead to instability. The full economic analysis of this is very complex.