That is what source guard is supposed to do. It protects the network by making sure that each address is only coming from one port on the switch. This prevents someone from spoofing to receive traffic destined for a different port. IP source guard doesn't do this by MAC address, but by IP address, so it isn't locking your MAC to a single port, it is locking the IP address to a single port to prevent spoofing. It uses DHCP snooping to lock the IP address to the port. To use the same device from a different port, you would need to pull an address from DHCP on the new port.
You seem to want it to work only for static addresses, but that is not how IP source guard works or what it is designed to do. It require DHCP snooping to allow an IP address on a port, and that is how it blocks statically assigned IP addresses, but there is no feature that only blocks statically assigned addresses; it is sort of a side effect which you can get around by putting a static binding on a port to allow a statically addressed device to work on a port.
Cisco has a document, IP Source Guard, which explains this:
Overview of IP Source Guard
IP source guard provides source IP address filtering on a Layer 2 port
to prevent a malicious host from impersonating a legitimate host by
assuming the legitimate host's IP address. The feature uses dynamic
DHCP snooping and static IP source binding to match IP addresses to
hosts on untrusted Layer 2 access ports.
Initially, all IP traffic on the protected port is blocked except for
DHCP packets. After a client receives an IP address from the DHCP
server, or after static IP source binding is configured by the
administrator, all traffic with that IP source address is permitted
from that client. Traffic from other hosts is denied. This filtering
limits a host's ability to attack the network by claiming a neighbor
host's IP address. IP source guard is a port-based feature that
automatically creates an implicit port access control list (PACL).