No, you do not need to have many different images for one button.
Usually, I create a button using:
buttonNext = this.game.add.button(x, y, spriteName, optionalFrameNumber);
and create a text using:
textNext = this.game.add.text(buttonNext.x, buttonNext.y, ‘Next’, fontStyle);
Then, to make the button fit the text:
buttonNext.scale.setTo(textNext.width / buttonNext.width, 1);
^ this will give you different sized buttons
Similarly, if you want to make the text fit the button instead:
textNext.scale.setTo(buttonNext.width / textNext.width, 1);
^ this will give you same sized buttons with different text sizes
If you need this button to have be more interactive (i.e. enlarges when mouse hovers over button) it would be good to group the button and text into one group so that the text will enlarge with the button, making it seem like the text is in the button itself.
This way, you can reuse your button object and just change the text every time.
Hopefully this will help you!