Valid reason they can refuse to give you a MAC:
The ISP is unable to confirm the identity of the account holder by performing standard checks,
The Broadband Service contract has already been terminated,
A valid MAC has already been requested and issued by the ISP,
The ISP has already submitted a Cease Request for the Broadband Service,
The ISP is unable to obtain a MAC from the ISP whom the customer wishes to switch to.
So, if the line has been ceased by you canceling your direct debit (which would also be covered by end of contract) then they don't have to provide you anything.
Also, if the contract for your ADSL is written correctly, then your not paying an invoice or direct debit could be breach of contract, in which case the contract is terminated and they don't need to give you anything.
If you were up to date with payments when you requested the MAC then you should be OK but otherwise there are plenty of loopholes. Why is it so difficult? Because even a real ISP can't make up a migration code, they need to obtain it from BT wholesale, which means in your case that your visp is contacting the real isp who are contacting bt wholesale. BT wholesale are difficult to deal with also and are very slow to get things done.
Also, just to add to the confusion, support (at least for us) don't deal with BT wholesale regularly as new connections are ordered by service delivery. So generally MAC requests get passed back to another department before they even go to BT.