What is going to be discussed here are the design issues related to an Ethernet hub rather than the actual electronic design of it. To be able to make intelligent choices about managing a large home network or a SMB network, you would need to understand the capabilities of these devices as designed.
Ethernet LAN considerations
Ethernet local area protocol requires that whenever a computer or a device on the LAN transmits data, all the other machines are able to listen to these transmissions. This is to ensure that when you transmit, the communication medium of the wiring, is free of other traffic. Even then it is possible that two machines start transmission at the same time. When such a collision occurs both machines will wait for a random time and then try sending the data.
Hubs are devices that help connect the machines together. Typically from four machines to up to 8/16 connections or ports as they are known can be connected together at these hubs. So say you have a 8 port hub and more than 8 machines to be connected, what you need to do is hook eight machines to the eight ports and take the outgoing port to another hub that connects the balance machines and the output of the first level of eight machines.
There is one more consideration involved in organizing the network tree. While 10 Mbps networks used to be common, 10/100 Mbps networks being used in more networks now. Number of hub layers one can use gets limited when you are trying to use the higher speed 10 Mbps/100 Mbps wiring. It would be prudent to limit to two layers of hubs. You should preferably use switches if the usage is anything close to high and medium.
Hub Design Considerations
Therefore what the hub needs to do is simply repeat/relay whatever is being transmitted on ay one or more of the input lines to the output line. Similarly it should just relay data traffic coming in to be sent to all the ports connected to it. This will ensure that every machine can hear what is happening in the network. Same thing happens on the next level if there are more than eight machines to be connected in the network. The most efficient arrangement then is a tree like set up of hubs and machines on the network.
This simple arrangement keeps the design of the hubs simple, they are just repeaters. An Ethernet network, however, is an inefficient arrangement when there is heavy traffic. It is easy to visualize that as more traffic is generated, there are more chances of a collision. Collisions will delay the data that was to be transmitted. The theoretical maximum throughput in a busy network is of the order of 37%. The throughput can only increase if we can reduce the possibilities of collisions. On the plus side, being simple they cost less. As the network grows, as your business grows or you need a reasonably large network to start with because you have a large number of users, the possibilities increase of these traffic problems. Only solution is to reduce data traffic somehow.
The design of the hubs can be improved to do that. Supposing the hub could read the address of the data packets being sent and received. One simple strategy would be to send out data from any of the incoming ports only if the packet was not meant for one of ports on the input side. Similarly it could repeat an incoming packet only if it is meant for the ports connected to it. That too it can send it to the specific port to which it is addressed. It is not difficult to see this simple strategy could reduce the traffic significantly and the throughput roughly doubles. These kind of improved hubs are known as switches and larger networks that are heavily used, have to have them in the network. As you need this additional intelligence, switches are comparatively more expensive. Depending on the usage pattern one could use a judicious mix of hubs and switches in a network. As a very rough guide stick with hubs if your network is 25-40 users and use switches if the user population is more than 40-50.
Considering what the Ethernet protocol/standard requires, you need a piece of equipment that can simply repeat traffic to all possible branch it is connected to. That would ensure that the communication protocol works properly. Yet the same mechanism leads to traffic choking the network when usage is higher. What you need to do then to modify the design of the hubs and create switches. These would help raise the throughput of the network significantly.