RESTful части Rails сделаны очень близко к тому, как работает протокол HTTP. В протоколе HTTP запрос GET не должен изменять какие-либо данные. Логически, если вы посмотрите, как все действия RESTful в Rails работают, они будут совпадать с действиями HTTP. POST предназначен для генерации новых данных, поэтому он логически создается. Вы используете GET для предоставления формы версии этого или, другими словами, нового действия. Index и show также являются GET, update - это PUT (или PATCH в Rails 4+), а destroy - это DELETE в HTTP.
Кроме того, он прекрасно разделяет логику в контроллере и дает вам плавный способ устранения ошибок (путем повторного рендеринга нового действия с сообщениями об ошибках).