It really depends on your organization what you can do there. You can go a long way with a menu of servers, pretty limited customization, and an exception process for customization that's really needed. Some places don't want to do any customization, and that can work as long as the menu is reasonable, and you're OK with the consequences: when loads need more CPU, but not more RAM, they'll get more nodes and have underused ram; when they need more RAM, but not more CPU, they'll get more nodes and have underused CPU. Maybe you can build some sort of scheduling system and make use of those pockets of underuse; maybe you can just deal with it, because standardization saves enough effort (and maybe money) to pay for the underuse; maybe you have a pretty large menu and teams can find a good fit. Exceptions could be some specific use cases can customize, or maybe you can add something to the menu if it will save $X or be an order of N nodes.
If you can measure existing loads and suggest hardware based on that, that's way more useful IMHO than having teams tell you their iops (cause teams are just going to make wild guesses about their loads anyway)