По значению в большинстве случаев будет и быстрее, и надёжнее. Если нужно что-то поменять в структуре, то передаёшь по значению, а возвращаешь новый объект, с изменённым состоянием. Естественно, не для всех случаев
В том то и дело. Может там единожды использовали объект и посчитали сколько это со сборкой мусора времени займет. А потом придет кто-нибудь послушав это и будет гонять один объект в 10кб миллионы раз, думая, что это быстрей чем по указателю.