Yes, but you'll need to switch to a slightly different way of specifying the box. The "basic" box doesn't support it, so you need to have annotate make a FancyBboxPatch associated with the text object. (The same syntax for a "fancy" box would work text placed with ax.text as well, for what it's worth.)
Also, before we go much farther, there are a couple of rather thorny bugs that affect this in the current version of matplotlib (1.4.3). (e.g. https://github.com/matplotlib/matplotlib/issues/4139 and https://github.com/matplotlib/matplotlib/issues/4140)
If you're seeing things like this:

Instead of this:

You might consider downgrading to matplotlib 1.4.2 until the issue is fixed.
Let's take your example as a starting point. I've changed the background color to red and put it in the center of the figure to make it a touch easier to see. I'm also going to leave off the arrow (avoiding the bug above) and just use ax.text instead of annotate.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
a = ax.text(0.5, 0.5, 'hello world',
fontsize=12,
backgroundcolor='red')
plt.show()

To be able to change the padding, you'll need to use the bbox kwarg to text (or annotate). This makes the text use a FancyBboxPatch, which supports padding (along with several other things).
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
a = ax.text(0.5, 0.5, 'hello world', fontsize=12,
bbox=dict(boxstyle='square', fc='red', ec='none'))
plt.show()

The default padding is pad=0.3. (If I recall correctly, the units are fractions of the height/width of the text's extent.) If you'd like to increase it, use boxstyle='square,pad=<something_larger>':
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
a = ax.text(0.5, 0.5, 'hello world', fontsize=12,
bbox=dict(boxstyle='square,pad=1', fc='red', ec='none'))
plt.show()

Or you can decrease it by putting in 0 or a negative number to shrink it farther:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
a = ax.text(0.5, 0.5, 'hello world', fontsize=12,
bbox=dict(boxstyle='square,pad=-0.3', fc='red', ec='none'))
plt.show()
