For any other Pokemon I would instantly say that defiant is the better ability, however, falinks gets two very respectable defensive stats with no retreat (An effective base 150 def and 90 spdef, if it works the way I think it does). battle armor could help it stay alive much better against Pokemon that make use of crits, even if only a little. you also wont be able to faint due to rnjesus deciding that he doesnt like you at that very moment. I still think defiant is better but battle armor has its place if you want to play it as a tankier set.
Given that most every Falinks will use No Retreat if its user expects it to even be decent, I would run Defiant as a result. This is because I would be concerned that Falinks might be affected by Intimidate.
You can't switch once you use No Retreat, so you can't fix Attack drops by switching. Defiant will ensure your Attack will never go down and you will instead get a net +1 boost.