Where I currently work, all changes done to switches / arrays are done via the CLI (which gets recorded to an log file) for the main reasons which Foonly has already mentioned.
Day to day moitoring etc is done via GUI. Everything else is done via CLI.
Unfortunately EMC only does their training courses via the GUI, so it's up to us to work out how its done via CLI (esp for newer gear).
Luckily enough my predecessors had created templates for 95% of the standard work we do, so it's pretty straight forward for the most of it.