Według mnie nie jest to dobry pomysł, żeby dwie funkcjonalności pchać do jednej metody. Łamie to m.in. pierwszą zasadę SOLID, bo w tym momencie, jeśli będziesz musiał zmienić coś w edycji czy dodawaniu to za to odpowiada jedna metoda, czyli jedna metoda ma dwa powody do zmiany.
Dodatkowo to może spowodować, że w o będzie null, czyli gdzieś później może wystąpić NullPointerException:
o = OsobaController.lista.stream().filter(g -> g.getId()== id).findFirst().get();
Jeśli rozbijesz to na drugą metodę to można zrobić tak:
OsobaController.lista.stream()
.filter(g -> g.getId()== id)
.findFirst()
.ifPresent(user -> model.addAttribute("osoba", user);
wtedy jest jak to się mówi null-safety.
Dodatkowo jeśli o jest zmienną klasową to narażasz się na to, że jeśli pójdą dwa requesty na raz to mogą sobie one wzajemnie nadpisywać tą zmienną. Najlepiej, jeśli o będzie zmienną lokalną w metodzie. Miej też na uwadze, że to samo będzie z OsobaController.lista jednak pewnie używasz jej jako "bazy danych" więc się tym na razie nie przejmuj - miej tylko tego świadomość, być może rozwiązaniem tego jest użycie jakiejś kolekcji z pakietu java.util.concurrent.