There are a couple of ways you can accomplish this using dynamic IPs.
First, I assume you are familiar with the setup described here http://wiki.mikrotik.com/wiki/Manual:Interface/EoIP
Now in order to establish an EoIP tunnel with dynamic IP(s) you can create a PPTP/L2TP/OVPN/SSTP VPN first, and then create the EoIP tunnel over the VPN.
Since those types of VPN work with the server-client model, you don't need a static IP on the 3G side (you need a static IP on the other side though).
And since you can have static IPs on the VPN endpoints you can then create the EoIP tunnel, your bridge etc.
But this method probably will cause you headaches with the MTUs and stuff, plus over 3G it will be a nightmare to pass any decent amount of traffic.
The other method - and the one which I use - is to use DDNS on the 3G side. There is a nice DDNS feature on the latest versions of MikroTik (IP > Cloud
)
And then with some scripting on the other side, you periodically check the IP of the DDNS entry and update the EoIP remote address if and when it changes.
The MikroTik's DDNS TTL is 60seconds by default, so in case that 3G gets disconnected and the IP changes, it will take about 60seconds for the offices to reconnect over EoIP.
Personally I've setup my own DDNS service so for that exact purpose I use a TTL of 1second and I run the script every 3 seconds, so in about 5seconds the EoIP tunnel is reconnected after an IP change.