You pose several interesting questions regarding the centralization of the governance and development of Bitcoin and Ethereum.
You accurately mentioned that decision making is done by miners and developers. There are some centralized repositories where the development of Bitcoin and Ethereum takes place. However, nothing prevents a developer from independently forking the code and adding their own changes which are not approved by the maintainers of the main git repository.
Who has the final say on the approval of a change to code? A change in the code is approved by the maintainers of the respective repository. These changes are reviewed, approved and merged by developers, not miners. However, even if a change is merged in the main repository, this does not mean that a miner will necessarily adopt it. If the repository maintainers approve a code modification that is undesirable, then some independent party observing the code changes (there are many who are looking at the pull requests and merges into the Bitcoin and Ethereum repositories) who does not have the ability to approve, disapprove, or merge code, will point out the problem in public forums. If an important problem is pointed out, it is possible that miners will not update their software. If miners choose not to update their software, the update will not take place, regardless of whether it is merged into the main repository.
Is there a consortium or a foundation that has the final say? While there are various foundations associated with Bitcoin and Ethereum, it is not possible that an individual or a group of individuals, solely based on their identity, will have the final say on any decision regarding code or process of a blockchain. The reason is that this would make the blockchain a centralized system. Instead, changes proposed must be accepted by miners. If a miner approves of a change, they will download the new code and run it; if not, they will remain in the older version.
A miner can always choose to run an alternative version of the software not approved by the main repository maintainers or foundations. That way, if the maintainers of the main repository are asked to put in a backdoor and someone detects this, it will not be possible to infiltrate the bitcoin network, as the miners will refuse to upgrade. A similar situation holds for changes that are economically undesirable to miners.
If a portion of the miners agree with a software upgrade, but another portion of the miners does not, then a fork will be caused. If the upgrade is soft-fork-compatible and the miners who do not upgrade are a minority, then they will be "carried over" to the blockchain produced by the majority who have upgraded, causing a "soft fork". This will force them to upgrade their node or risk losing their profits. If the upgrade is a hard fork, then the chain will be split into two, regardless of whether the majority upgrades. The minority will maintain their own chain. This is what happened between Bitcoin and Bitcoin Cash, where the change of block size increase was not approved by the majority, but constituted a hard fork change. The decision of which code version survives is hence up to the adoption policy of miners.
More details about the different forks are described in the paper "A Wild Velvet Fork Appears", which appeared in Financial Crypto '18.
Why does a website show the progress of voting on a particular blockchain fork? This display is purely informational and does not affect the decision. Decisions to upgrade or not are indicated on the blockchain by miners. These decisions are advertised through a "signaling" mechanism by which miners include their vote in their coinbase transaction, the transaction which pays them their profits. Because that transaction is verified by proof-of-work, it is impossible to fake - the miner that created that block really did signal their decision. Miners observe the signaling by other miners to decide whether they will upgrade.
For example, an activation period can be allocated by the developers during which miners can vote, by including their signal in their coinbase transaction, to indicate their preference. During this activation period, the feature is not activated. If a minimum threshold of signaling is indicated during the activation period, such as 90% of blocks, miners agree that they will adopt the new feature. This helps avoid soft forks where the majority has not upgraded. As long as most miners signal truthfully, this mechanism works. Signaling does not require developer or foundation approval and the adoption of a feature is not based on observing the statistics off of a website.
Despite the above, in practice, a lot of development relies on a few individuals who are major contributors. The fact that few people are involved in the actual development is studied in the paper "Egalitarian Society or Benevolent Dictatorship:
The State of Cryptocurrency Governance" by Azouvi, Maller and Meiklejohn which appeared in Financial Crypto '18.
To conclude, there are no individuals or foundations which have the final say on which feature will be included. Governance is performed in a decentralized manner in which software adoption by miners indicates which protocol will be followed.