Sticky sessions are the quick fix when you have a legacy app that already stores session state in local memory and you cannot easily change it. They are also useful for stateful protocols like WebSocket connections, where a long lived connection should stay on one server, and for in process caches where re routing would mean a cold cache miss every time.
The big cost is that they fight against the whole point of horizontal scaling. Load gets uneven, because a handful of heavy users can pin themselves to one server while others sit idle. Worse, if that server crashes, every session living only in its memory is lost, so those users get logged out. Auto scaling also suffers, since new servers you add stay empty until brand new clients arrive.
The cleaner long term answer is to make servers stateless and move session data into a shared store such as Redis, Memcached, or a database. Then any server can serve any request and you can drop stickiness entirely. Sticky sessions are best treated as a bridge, not a destination.