The short answer to your question is "no, the swap gate implemented in bondgate.h cannot be used to swap two sites of different dimension". But the longer answer is that it would be hard to make it work within the current design. This is because it uses a SiteSet object that is predicated on the assumption that the sites always have the same dimension throughout the algorithm. One could imagine a design that lifts this restriction perhaps (e.g. swapping the site definitions within the SiteSet itself when a swap gate) but I think that would be much too complicated.
So I think a better way for you to go is to write a special-case function to use in your code. You can use the code in itensor/mps/bondgate.h (the function "makeSwapGate") as a template to start from. Once you generalize the code, you can check that the swap gate returned by your function has the correct matrix elements / tensor components by using "PrintData" to print it out along with all its non-zero components.
Please write back with a comment below if you need help making this function.