The decision to make pot-pin buttons work like this wasn't invented for Joy2B+, so changing it would break old games, but it's not quite as bad as you make it out to be. This code is universal:
PADDL0 = $270
pot_max = $e4
test_button_c
lda PADDL0
cmp prev_button_c
beq not_pressed
sta prev_button_c
eor #pot_max
bne not_pressed
; code to handle button press goes here!
...
not_pressed
; button wasn't pressed, go do something else
prev_button_c
.byte pot_max
(My code calls it "Button C" because that's what it's called on a Megadrive/Genesis controller). You can detect a Joy2B+ or compatible button by checking if prev_button_c ever gets set to anything other than #$e4, and you can read the third button from PADDL1 in the same way.
Edit: the code works with a normal joystick because the button is "held down" on startup, and won't be detected until it's "released".