I would try one of two methods:
Assuming your layers have an unique ID attribute, perform a 'distance matrix' between the layers searching for only the 1st nearest points. Sort the resulting CSV file (in Excel or similar) by the 'Distance' column and remove any entries over your chosen maximum distance. The edited CSV file can be imported into QGIS as a delimited layer with 'no geometry' and 'joined' to your first point layer using the 'InputID' as the join field. The second point layer can now be joined to the first using the 'TargetID' as the join layer.
The other method would be to buffer one of the layers and carry out 'join attributes by location'. You could run a 'point in polygon' analysis first to flag up where you have more than one point within the buffered layer.