Try this instead:
element.all(by.css("ul.nav button")).first()
Basically, this tells Protractor that you already know there’s more than one element, and you just want the first one (like you said in your question).
Try this instead:
element.all(by.css("ul.nav button")).first()
Basically, this tells Protractor that you already know there’s more than one element, and you just want the first one (like you said in your question).