Я знаю доку и понимаю смысл аргументов. Использовать inplace аргумент в целом плохой стиль, т.к. пандас тяготит к выстраиванию цепочек вычислений. Если вернуться к примеру выше, то inplace=True будет полностью аналогичен df.columns = *какие-то поля*. С другой стороны, никто не мешает написать (только какой смысл) df = df.set_axis(columns=*bla bla bla*), т.е. без inplace, но изменения все равно сохранили.