いまのいままで知らなかった恥ずかしい話。
表題の通りです。確認できたのは Firefoxのみですが。
わかりやすく書くと、tdの中で position:absoluteしようとしても Firefoxでは親の tableに position:relativeが効いていないため、これを親とみなさず、table関係なしに配置されてしまうということです。(わかりやすくないか?)
わかりやすい話はこちら(table系にはposition:relativeが効かない)をどうぞ。
解決策としては、tdの中に position:relativeな divをいれてしまいました。こっちの方が tdごとに absoluteな位置を指定できて便利です。(そもそも、tdを position:relativeにしてるのになんで親にならずに、tableが親になるんだ?というもやもやとした疑問があったわけで、もやもやしたら調べろということですね)