The item names gold_sword, gold_pickaxe, and gold_axe exist and are usable but gold_shovel does not. You must use golden_shovel. The same applies for wooden tools. wood_<item> exists as item names for sword, pickaxe, and axe but not for shovel.
The item names for sword, pickaxe, and axe can be written using the short form or long form, wood/gold and wooden/golden respectively, but for shovel it can only be written in its long form as wooden or golden.
Comments 8
Like Isaac said, this probably don't won't be fixed unless Mojang simultaneously chooses to change other names, which I don't see happening. I'm not going to close this however, because I want to wait for an official statement.
Changing the names would affect all command blocks that use these names. There are other examples of inconsistent naming, and even inconsistent implementation patterns (such as using metadata vs separate IDs for the same type of item, such as different types of slabs).
Yeah, it's really annoying. It could be fixed without breaking command block stuff by allowing them to be referenced to by more than one name (which they already sort of do- "stone" and "minecraft:stone" both work). I really hope this is fixed, but I find it unlikely, based on Mojang's past behavior.
wood_sword and wooden_sword both reference the same item. Adding wood_shovel and gold_shovel while still keeping the old references shouldn't break anything.
Unfortunately, this won't be fixed. The item names in the code are just inconsistent, probably because they were added at different times, or by different people.