Looking at the script again, I think I see where the problem is coming in. There is an un-needed "If false :jump" command at the start of the script without anything that would set it as true or false. As such, whether it jumps to the "no room for items" or not is determined by whatever value is already in that ram address from any other event. (This ram address is one that gets used by most scripts as a temporary place to store values such as whether you answered yes or no, or whether there is room for an item or not, etc.)
Enter the gameshark code 010173D1 and try talking to the Pokeball again, then just turn the code off. Don't keep it on the whole time you are talking to the Pokeball either. Have the code on, talk to the Pokeball, then turn the code off while it is showing the text. There is another check in the script after the text comes up, so you won't want it to continue forcing that value to be x01. You just want it to do that long enough to make the event run.
Basically, this will just force it to be "true" while the code is on. You'll want to turn the code off when you're done though, because continuing to play with this code on would make the game assume you answered "yes" to every question regardless of what you actually pressed and could cause other weird things, so don't keep it on all the time. But it aught to fix it so you can pickup the badges.