If I were to provide a list and say this is what developers should be given flexibility to do, what would that list be?
My extensive, exhaustive, comprehensive list would be:
- Developers should be given flexibility to change/improve anything that ultimate benefits the user experience.
The problem is the requirements, as you hint at. Requirements, IMHO, should never specify anything other than BUSINESS or USER tasks/objectives. Once requirements start labelling buttons, or positioning icons, or specifying particular UI elements, they break the entire design process.
As such, I really prefer how Agile tries to encourage 'user stories' over requirements. Ultimately, the design process (be it via UX wireframes or dev code) is where a lot of requirements come to light.