This situation is unprecedented in the software world. In other peer-to-peer systems (think Skype or Bittorrent or whatever), software updates fix bugs or add new features, and if the user doesn't update their software the worst that can happen is that their program will run with some problems.

In Bitcoin the situation is drastically different because the system is entirely based on reaching consensus on something. Bittorrent or Skype don't really need to reach consensus on anything. Sure there's still a protocol that clients should follow for the system to work as expected, but even if these rules are slightly different from client to client, overall the system still functions.

With Bitcoin, consensus is what makes the whole system possible. The rules behind how to reach consensus are embedded (actually hardcoded) inside the client/node that all the people are running. Now, if there's some clients that have different rules than others regarding the consensus, then the whole system branches into different versions creating effectively different versions of Bitcoin.

In fact, one can go ahead and say that Bitcoin is exactly the set of rules (the actual algorithm) to reach consensus. If you're not using those rules, you're not using Bitcoin, you're using something else (Bitcoin 2.0, Litecoin 2.0, whatever...).

Now you understand why this is really an unprecedented situation in the software world (perhaps apart from the fork of 2013). If you change the rules then you're effectively creating a new version of Bitcoin and you must make everyone move onto your new version - and I'm not talking about only miners here; all people that are running clients on their phones, or on their computers; all the web wallets; all the exchanges. They all must update their code otherwise you've essentially created another system which is not Bitcoin.

So to answer your question about "who makes the decision about the rules", it's the actual people running the bitcoin software that decide at the end of the day.

EDIT as was noted in the comments, regarding the specific block size issue, SPV clients don't actually need to be updated because they don't check the size of the blocks - they trust the miners will do the checking for them.