: — это разделитель имен локального и удаленного бранча.
То есть git push origin-name :my-branch — это не более, чем запушить «ничего», то есть частный случай команды git push origin-name local-name:remote-name
понятно становится тогда, когда знаешь, что такое работает. Но то, что пустота пушится в бранч и это действие заменяет пустотой ветку — до этого нужно додуматься (а с моей точки зрения это больше похоже на баг). Ну и удаление становится однообразным.
Привыкнуть можно ко всему, безусловно. Но что плохого в том, чтобы добавить опцию, согласованную с опциями других команд? Согласованность интерфейса (неважно, какого именно: API, UI, CLI, ...) — это важная характеристика.
Если же рассматривать замечание автора про скорость набора в отрыве от всего остального, то я согласен, аргумент слабый. Но стоит ли к нему придираться?
Что там в Git 2.8? Push, grep, rebase, config и прочие штуки