The IP addresses may be bound to different interfaces, but they still represent the same host. Sending a packet to one address via an interface bound to a different address will indeed work, and so it should. It's not a Linux-specific issue, it's TCP/IP working as designed.
To stop this from working, you'll have to filter the packets with
iptables. You can use the "-i" interface match to filter packets entering via a specific interface:
Code:
iptables -t filter -A INPUT -i eth0.256 -d 10.0.0.10/32 -j DROP
iptables -t filter -A INPUT -i eth0.257 -d 192.168.1.10/32 -j DROP
Note how you'll have to use the INPUT chain rather than the FORWARD chain, as no routing is involved in delivering packets to a different IP address on the same system. For the same reason, disabling routing will not prevent packets entering interface X from reaching an IP address bound to interface Y.