Solution 1:

Can you change the MST instance number to 0? I think this may be causing your issue, MST runs instance 0 by default so you have created two instances, instance 1 with the vlans you have mapped and instance 0 with all the others. judging by your Cisco config you should only need one instance:

spanning-tree mst configuration
 name mstp
 revision 1
 instance 0 vlan 1, 40, 70, 100, 250
 spanning-tree mst 0 root primary

Its strange that your root is flapping but you have only set the priority for instance 1 not 0. Move it all to instance 0 and also set the priority of MST instance 0 on the HP switches to higher than the default. Then the root will always be the 3750 as long as its on the network.

On the HP switches:

spanning-tree
spanning-tree config-name "mstp"
spanning-tree config-revision 1
spanning-tree instance 0 vlan 1 40 70 100 250
spanning-tree priority 36864

The Spanning tree path cost command was configured probably to stop HP2 from becoming the root:

Syntax: spanning-tree < port-list > path-cost < auto | 1..200000000 >

Assigns an individual port cost that the switch uses to determine which ports are forwarding ports in a given spanning tree. In the default configuration ( auto ) the switch determines a port’s path cost by the port’s type: –

10 Mbps: 2000000 –

100 Mbps: 200000 –

1 Gbps: 20000

Refer to “Note on Path Cost” on page 4-17 for information on compatibility with devices running 802.1D STP for the path cost values (Default: Auto).

From the HP Advanced Traffic management guide page 138. If you didn't add the path cost statement I would remove it and just set the bridge priority higher on the switch you want to be the root. If thats the Cisco then you are already set with my commands.

Solution 2:

Wow.. After all the research it turns out all I was missing was setting the MST 0 instance value to a lower value than the default. Once I set it to 4096 all the show spanning tree configs started functioning as expected showing the Cisco macs as the root.

GerryEgan's solution would work in since it also would have changed the MST 0 instance to a lower value. however I'd eventually like to be able to use both 10 gig links, one for VLAN 1 and one for VLAN 100. This general setup was roughed out with that final goal in mind. I didn't include it in the question since it didn't really pertain - I was desperate for any solution.

In summary to configure this setup I used:

Cisco 3750

spanning-tree mode mst
spanning-tree extend system-id
spanning-tree mst configuration
 name mstp
 revision 1
 instance 1 vlan 1, 40, 70, 100, 250
spanning-tree mst 1 priority 0
spanning-tree mst 0 priority 4096

HP Switches

spanning-tree
spanning-tree config-name "mstp"
spanning-tree config-revision 1
spanning-tree instance 1 vlan 1 40 70 100 250