The recent Linux kernels have a nice feature it’s possible to use the network address just like any other IPv4 address. This can improve the number of available IPv4 addresses by one.
The network address is the first address within a netmask. E.g. if you have a network 1.2.3.0/24 then the network address is the 1.2.3.0
The network address is distinct from the broadcast address (1.2.3.255 in this example), and it’s also kinda pointless. I don’t think it’s used for anything right now in Mikrotik.
Can you allow it to be used for regular assignments?
Even if you could do it in ROS (and on linux hosts running recent kernel), it would probably make other devices on same network confused (those devices most probably wouldn't be able to communicate to such host).
And the benefit of using it inside private networks would be negligible (increase of address space size by whooping 0.4% on a /24 subnet, even less on networks with shorter netmask).
We’re using small IPv4 networks with public IPs to allow individual depts host their own servers. We typically use /29-/28 networks, so the subnetting overhead is quite significant.
I actually tried to use network addresses for the router’s side, and it works perfectly fine with anything we've tried so far: Linux, macOS, iOS, Windows, ESP32, etc. And I’ve seen the .0 addresses used for the gateway address many times before, especially on cable modems.
Are you sure that the .0 addresses you saw were actually network addresses? ISP might have been using wider subnets (e.g. 192.168.42.0/23 makes 192.168.43.0 a normal host address). Or they might have been using /31 addressing (this wasn't supported by ROS a while ago bit it might have changed lately) which doesn't use network and broadcast addresses. Or even /32 addressing (fully supported by ROS). Technically /31 and /32 addresses can be used on ethernet (which is actually a point-to-multipoint tech), not only on PtP links.
If you 'abuse' network address for host address and some device doesn't tolerate such abuse, then in some case it's possible to set the address/network on that host wider.
E.g. if you're using 192.168.42.8/29 and would like to (ab)use 192.168.42.8 for host address, then you can set host address to 192.168.42.8/28 because in that case network address i 192.168.42.0 while broadcast address remains 192.168.42.15.
If I'm not wrong, then it's not possible to make 192.168.42.16/29 wider because one would have to use 192.168.42.0/27 to allow using 192.168.42.16 as host address but that would mean change of broadcast address (from 192.168.42.23 to 192.168.42.31).
The drawback is that this way hosts from such network can't communicate with hosts in "adjacent" network (e.g. if you're using 192.168.42.8/28, then your hosts won't be able to communicate with hosts in network 192.168.42.0/28).
But to solve the problem you're mentioning: it is possible to assign end devices IP addresses from (larger) private IP address space and to set up NAT in address-to-address manner. Since you'd then use public IP addresses from the whole subnet as NAT addresses, you'd be able to use all addresses, also those which would otherwise be used as network address and broadcast address for those smaller subnets.
I’m talking about the inner network (the RFC1918 space). I definitely saw that in the wild.
But to solve the problem you're mentioning: it is possible to assign end devices IP addresses from (larger) private IP address space and to set up NAT in address-to-address manner.
This turns off the fastpath in Mikrotik. And it requires way too much setup.