The rule for acceptance currently is that it needs to be implemented in two clients and a relay (if relevant to relays). There are libraries, so of course many aspects are quickly adopted in the libraries, too.
Currently clients support all different sets of features and do things differently. But I would say that's acceptable. Let them experiment and eventually they will converge doing things more similarly.