A joystick encoder will work just as well as a keyboard encoder, and if there is ever an issue, joy2key or xpadder can solve it.
If there is ever a case where you have an emulator that doesn't like a joystick command, you have your machine run Joy2Key or Xpadder in the background. It will convert joystick inputs into keystrokes. I can't think of much anything that can't handle joystick commands anyway.
Those utilites also work for emulators where a command is not assignable. If you have an NES emulator and you want to have a button for save and load states, often that button can't be assigned to anything but is only F5 or Shift+Alt+S. You can just set those functions up with a button press using one of those utilities.
Also, A lot of people prefer to use a joystick encoder with xpadder because they can really customize their own special functions and admin commands. You could set up something like holding down the coin button for 5 seconds will reset the game, or pressing a combination 2 buttons to quit the game. It allows the admin functions to be far more in depth. You can also set up different profiles for different emulators, and you can even set up functions to control mouse movement with the utility. With admin functions, Joy2Key is not as as good as Xpadder in this regard, but it can still be set up for a number of these features.
I know I am getting very much in depth here, but I also love the profile features in these utilities. You can set up special profiles for different games, which allows you to work better with computer emulators that have different controls on each game. For example, I emulate commodore games where they keyboard is often part of the control scheme. Game 'A' will use joystick port 2, space bar, and enter for inputs. Game 'B' uses joystick port 1, Buttons 'T', 'V', 'Enter' and asks for your name to be entered in the keyboard when you get a high score. I can set a profile for each to run on the same set of controls, and when it asks for my name on high score, I can assign a button to automatically type 'V,I,G,O' when I push it. I just setup a command in my frontend to run a specific profile when I boot a specific game.
Haha, I know I droned on about advanced functions there, but nonetheless, joystick encoders work fine, and can be very cool when combined with xpadder or joy2key.