A Raspberry Pi with open source software is more than capable of controlling every IOT device in the home.
The protocols used aren't the problem, the main issue is most people's home internet is provided by cheap and nasty (in the US read expensive and nasty) ISP's who hide the connection behind layers of NAT, and it isn't a one click process to access the devices from the smartphone app everyone demands.
The reason an external server is used for off the shelf IOT stuff, is both the device and the app have a publicly available server they can connect to, without having to configure router firewalls and dynamic DNS. The disadvantages are that you can be charged a subscription to access the server, the server can mine all the data passing through it to sell to whoever. And best of all, whenever the vendor feels like it, they can switch the server off making all the devices completely useless.