Case closed. Turns out I had improper JAVA_HOME defined in ~/.mavenrc which overrides user env and that is why it worked as root. I had to debug the mvn bash script to get to the core of it. Too bad maven fails with not much info in case like this. If you run with -X it could at least tell you the current config and where it is taking the vars. :sadface:
Thanks everyone for given help.