What inefficiency does sharding & partitioning attempt to address? I have never implemented sharding or partitioning, but from what I understand, multiple servers are used to distribute large amounts of data.

Is this because of a limited hardware budget or to address end-user latency?

What I mean is that provided an unlimited budget providing for ideal processing, storage, memory, network, etc, would sharding or partitioning be able to still increase performance?
This should get you started to wonder more:


The Basics of Database Sharding
Shard (database architecture)
Partition (database)
SQL Server Table Partitioning: Resources
SQL Server 2005 Partitioned Tables and Indexes


A lot to read but will give you all the answers that you're looking for!