The button component uses the same code to swap sprites, and it seems to be working fine. Are you doing that at edit time? Is there more than one widget attached to the same object? Is there a panel on the same object? Need more info here... Try this simple test:
1. New scene.
2. ALT+SHIFT+S, choose one sprite.
3. ALT+SHIFT+C, attach a Button component.
4. In the "Sprites" Hover section, choose a different sprite.
5. Run, hover over the sprite.