I faced a simiar problem to yours. We have limited bandwidth for many users and so I wanted to allocate static IP addresses to allow control of users' bandwidth. The problem is that Apple Internet Sharing is doing two different functions:
1. Allocate IP addresses
2. Provide NAT to allow internet access
The DHCP service in the Server App does a much better job of allocating IP addresses, but Server no longer has a NAT service. If you turn on DHCP service to control IP address allocation, you lose internet sharing. If you turn on internet sharing, DHCP service turns off.
I ended up resolving the problem by using Icefloor, a free third party firewall app. Basically:
• Turn off Internet Sharing and the built in firewall in System Preferences.
• Start pf services in Icefloor (it has a simple way of turning on outbound NAT to share internet with users).
• Turn on DHCP service in Server App and use it to allocate fixed IP addresses.
I think Icefloor can also control speed to different users, but I use Squid proxy server which is more powerful.
Maybe you already solved your problem, but I'll put this here in case it is helpful for other users. A much better solution would be for Apple to include a NAT service in the Server App and I can't understand why they don't!