I haven't tried TabNine but according to its home page it doesn't support Elixir. It also requires a monthly subscription (the daily limit would be consumed in about 5-10 minutes of coding). I don't mind paying for things but at this time I'm not interested in subscribing to more services.
YCM feels more like a LSP client than buffer / project level auto-complete. AFAIK it requires you to have a language's runtime specifically installed which is a deal breaker for me. Most of my apps run in Docker and I don't have local copies of any runtimes installed.
ST4 works wonderfully in this case because it parses everything out based on syntax highlighting rules.